はじめに
VBAで別のEXCELファイルからデータを取得する場合、ブックを開かずに中のデータを取得することが出来ます。
ExecuteExcel4Macroメソッド
構文
ExcuteExcelMacro(“‘ブックのパス[ブックの名前]シート名’!R1C1形式のアドレス”)
上記のように、引数に所定の形式で取得したいアドレスを指定します。
R1C1形式で指定するので注意してください。
サンプルとして次の2つのEXCELを用意します。
まずは、VBAを記述するEXCELの①「ひらちんの部屋_VBA.xlsm」

取得したいデータを保持しているEXCEL②「開かないブック.xlsx」
このEXCELの「マスタ」シートのA1:B3のデータを、①のEXCELに入力します。

コードは次のようにしてみました。
②開かないブック.xlsxから1セルずつデータを取得して転記します。
Sub sample()
Dim data As String, i As Long, j As Long
For i = 1 To 3
For j = 1 To 2
'データを取得する
data = ExecuteExcel4Macro("'C:\[開かないブック.xlsx]マスタ'!" & "R" & i & "C" & j)
'取得したデータを入力する
Cells(i, j) = data
Next
Next
End Sub
②開かないブックのセルの指定が、R1C1形式なところ以外は特に難しいところは無いと思います。
では動作を動画で確認してみます。
②開かないブック.xlsx は閉じています。
出来ましたね(^o^)
コメント