こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAで別のブックを開く方法を知っていますか?複数のブックを使って処理を作るとき、別のブックを開く方法を覚えておくと便利です。そこで今回は、
- ブックを開くためのOpenメソッドの使い方
- Openメソッドを使ったサンプルコード
- Openメソッドがエラーになるケース・対処方法
- 合わせて覚えておくと便利なブック操作方法
といった基礎的なことから、応用的な方法まで、徹底的に解説します!
Workbooks.Openメソッドの使い方とは
はじめに、ブックを開くためのOpenメソッドの使い方について解説します。Openメソッドの使い方は、次のとおりです。
使い方:
Workbooks.Open ブックのファイルパス
また、ブックを閉じるCloseメソッドと組み合わせて次のように使うのがおすすめです!
使い方:
Sub Test1()
Dim wb1 As Workbook
'ブックを開く
Workbooks.Open ブックのファイルパス
Set wb1 = ActiveWorkbook
'ブックに対してのメイン操作----------------------------
'
'
'
'------------------------------------------------------
'ブックを閉じる
Application.DisplayAlerts = False
wb1.Close
Application.DisplayAlerts = True
End Sub
Workbooks.Open ブックのファイルパスでブックを開いた後、Set wb1 = ActiveWorkbookで開いたブックのオブジェクトを変数wb1に入れています。
そのあと、メインの処理(ブックからデータをコピー、ブックのデータを変更など)を実行し、最後にwb1.Closeでブックを閉じる流れですね。
Application.DisplayAlerts = Falseは一時的にメッセージボックスを非表示にする方法で、ブックを閉じるときに「保存しますか?」といったメッセージを出さないようにするために書いています。
DisplayAlertsプロパティの詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!
Openメソッドを使ったサンプルコード
次に、サンプルコードをもとに、具体的な使い方について解説します。サンプルについて解説する前に、サンプルで使うCopyメソッドについて簡単に解説します。Copyメソッドを使えば、次のようにセルのデータをコピーすることができます。
Copyメソッドの使い方:
Workbook.Worksheets.Range(コピー元のセル範囲).Copy Destination:=Workbook.Worksheets.Range(貼り付け先のセル範囲)
アクティブワークブックをのデータをコピーするサンプルコードを用意しました。


サンプルコード:
Sub Test()
'ブックを開く
Dim wb1 As Workbook
Workbooks.Open ThisWorkbook.Path & "Test.xlsx"
Set wb1 = ActiveWorkbook 'アクティブなワークブック
'アクティブワークブックから、マクロブックにデータコピー
wb1.Worksheets(1).Range("A1:A5").Copy Destination:=ThisWorkbook.Worksheets(1).Range("A1:A5")
'ブックを閉じる
Application.DisplayAlerts = False
wb1.Close
Application.DisplayAlerts = True
End Sub

このサンプルでは、Workbooks.Openファイルパスで新しくブックを開き、開いた直後は必ずアクティブになる習性を利用して、アクティブワークブックからマクロのブックにデータをコピーしています。
このように、別ブックを開いてデータ操作したいときに、Openメソッドは便利です。ちなみに、サンプルに使ったActiveWorkBookについては以下で詳しく解説しているので、気になる方は見てみてくださいね!
Openメソッドがエラーになるケース・対処方法
ここまでOpenメソッドがエラーにならないことを前提に話を進めましたが、エラーになるケースがあります。「指定したファイルパスにファイルがない」ケースです。
そのためOpenメソッドを使う前に、ブックの存在チェックをするのがおすすめです!Dir関数を使えば、次のように簡単にファイル存在チェックができます。
サンプルコード:
Sub Test()
Dim str1 As String, str2 As String
str1 = "C:UsersSiroDesktopVBATest1.xlsx"
str2 = Dir(str1)
If (str2 = "Test1.xlsx") Then
Debug.Print "Test1.xlsxが見つかりました。"
Else
Debug.Print "Test1.xlsxは見つかりませんでした。"
End If
End Sub
実行結果:
Test1.xlsxは見つかりませんでした
このように、簡単にファイルの存在チェックをすることができます。Openメソッドを使う時は必須なので、セットで覚えておくのがおすすめです!
Dir関数の使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!
合わせて覚えておくと便利なブック操作方法
ここまでOpenメソッドでブックを開く方法について解説してきましたが、ブックを開いた後に操作する方法も知りたいですよね。そんな方向けに、ワークブックの操作をまとめている記事をご紹介します!
以下で詳しく解説しているので、気になる方は見てみてくださいね!
まとめ
今回は、Openメソッドを使ってブックを開く方法について解説しました。別ブックを開いてデータを操作したいケースはよくあります。使い方も簡単なので、ぜひ使ってみてくださいね!






