別のブックのセルの値を取得するExcelマクロを作成することがあったので、
紹介します。
○ブックを開かずにセルの値を読み込む
Sub ReadData()
MsgBox ExecuteExcel4Macro("'C:\[Sample.xls]Sheet1'!R1C1")
End Sub
上のプログラムではC:\Sample.xlsのSheet1のセルA1のデータを読み込みます。
MsgBox ExecuteExcel4Macro("'C:\[Sample.xls]Sheet1'!R1C1")
End Sub
○ブックを開かずにセルに値を書き込む
Sub WriteData()
Dim i1 As Integer
For i1 = 1 To 10
Cells(i1, 1) = ExecuteExcel4Macro("'C:\[Sample.xls]Sheet1'!R" & i1 & "C1")
Next
End Sub
上のプログラムではC:\Sample.xlsのSheet1のセルA1~A10の範囲の値をDim i1 As Integer
For i1 = 1 To 10
Cells(i1, 1) = ExecuteExcel4Macro("'C:\[Sample.xls]Sheet1'!R" & i1 & "C1")
Next
End Sub
アクティブシートのセルA1~A10の範囲に書き込みます。
値を読み込むために指定したブックやシート(今回の場合はC:\Sample.xlsのSheet1)が存在しない場合はエラーになるの注意してください。
また、このマクロではセルの指定にR1C1形式を使用していますが、「R」はRow(行)
「C」はColumn(列)を指し、行列ともに数字で表示されます。
次の行に移動していくとR1,R2,R3,・・・、次の列に移動していくとA1,A2,A3,・・・というふうに指定していきます。