Sub TEST1()
Dim Wb1, Wb2
Set Wb1 = ThisWorkbook 'このブック
Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック'セルの値を取得する
Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
End Sub
最初に、「元ファイル.xlsm」と「取得先のファイル.xlsx」というファイルを開いておきます。
別ブックを開いておく
「元ファイル.xlsm」がVBAコードが記載されているファイルです。
「取得先のファイル.xlsx」には、「Sheet1」のセルに値が入力されています。
では、VBAコードを実行します。
別ブックから値を取得
別ブックから、値を取得することができました。
既に、別ブックが開いている場合は、簡単です。
別ブックが閉じているとき
次は、値を取得したい別ブックが、閉じている場合です。
この場合は、
別ブックを開く
別ブックから値を取得する
という流れで、値を取得します。
別ブックが閉じている場合に、別ブックから値を取得するVBAコードは、こちらです。
Sub TEST2()
'別ブックを開く
Workbooks.Open Filename:=ThisWorkbook.Path & "\取得先のファイル.xlsx"
Dim Wb1, Wb2
Set Wb1 = ThisWorkbook 'このブック
Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック'セルの値を取得する
Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
End Sub
Sub TEST3()
Dim Wb1, Wb2
Set Wb1 = ThisWorkbook 'このブック
Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック ←エラーとなる'セルの値を取得する
Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
End Sub
VBAコードが記載されている「元ファイル.xlsm」だけが開かれている状態です。
別ブックを閉じたままの状態
VBAコードを実行してみます。
別ブックが開かれていないので、エラーとなります。
エラーとなる
エラーとなりました。
うっかり、別ブックを開いていない状態で実行すると、エラーとなります。
既に開いた状態で開いても問題なし
既に開いた状態で、ファイルを開いても問題ないです。
別ブックを開いた状態で、「ファイルを開いて」別ブックの値を取得してみます。
Sub TEST4()
'別ブックを開いた状態で開く
Workbooks.Open Filename:=ThisWorkbook.Path & "\取得先のファイル.xlsx"
Dim Wb1, Wb2
Set Wb1 = ThisWorkbook 'このブック
Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック'セルの値を取得する
Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
End Sub
Sub TEST5()
'別ブックを開く
Workbooks.Open Filename:=ThisWorkbook.Path & "\取得先のファイル.xlsx"
Dim Wb1, Wb2
Set Wb1 = ThisWorkbook 'このブック
Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック'セルの値を取得する
Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
Wb2.Close False '別ブックを閉じる
End Sub