こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、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メソッドを使ってブックを開く方法について解説しました。別ブックを開いてデータを操作したいケースはよくあります。使い方も簡単なので、ぜひ使ってみてくださいね!