VBスクリプトを自動化する方法

VBスクリプトを自動化する方法

次のようなコードがあります:

Sub NewYearData()
    Dim wb1 As Workbook, wb2 As Workbook
    Dim r1 As Range, r2 As Range
    Dim addy As String, sh As Worksheet
    Dim shName As String
    
    Set wb1 = Workbooks("PreviousYear.xlsm")
    Set wb2 = Workbooks("CurrentYear2.xlsx")
    addy = "C16:AH18"
    
    For Each sh In wb1.Sheets
        shName = sh.Name
        Set r1 = sh.Range(addy)
        Set r2 = wb2.Sheets(shName).Range(addy)
        r1.Copy r2
    Next sh
    
End Sub

ここにコピーする必要があるセルの固定位置があります。一部のシートでは位置が異なるため、次のように外部ファイルとシートへの参照を持つすべてのセルを見つける必要があります。 'D:\Data\[Data_1990-2019.xlsx]Set01'!D105

質問: 参照を含むすべてのセルを検索し、それらのセルだけを新しいファイルにコピーするにはどうすればよいですか?

答え1

以下のコードは記事からコピーしたものです
Excel ですべてのリンク (外部参照) を見つけて一覧表示するにはどうすればよいでしょうか?

For Each xSheet In Worksheets
    Set xRg = xSheet.UsedRange.SpecialCells(xlCellTypeFormulas)
    If xRg Is Nothing Then GoTo LblNext
    For Each xCell In xRg
        If InStr(1, xCell.Formula, "[") > 0 Then
            ...
       End If
    Next
LblNext:

上記のInStr呼び出しは、必要に応じて調整できます。

関連情報