ワークブックを開く
VBA を使ってデータを自動的に処理するにあたって、既存のワークブックからデータを読み込りたい場面があります。
VBA では他のワークブックを開く方法が用意されているため、VBA からワークブックを開き、データを取得・操作することが可能です。
これにより、複数のワークブック間でデータを自動的にやり取りすることができます。また、連番を含む複数のワークブックを一括で処理することも可能です。
このページでは、VBA を使ってワークブックを開く方法を具体的なコード例を交えて紹介します。
VBA を使ってワークブックを開く方法
新しくワークブックを開く場合、Workbooks
クラスに用意されているOpen
メソッドを使います。
Workbooks.Open "対象のファイルパス"
このメソッドは、引数に指定したファイルパスのワークブックを開きます。
ファイルパスにはC:\Users\user\Documents\sample.xlsx
のような絶対パスを指定します。
相対パスでワークブックを開く
もし相対パスを指定したい場合は、ThisWorkbook.Path
プロパティを使って、現在のワークブックのパスを取得し、それに対して相対パスを指定します。
Workbooks.Open ThisWorkbook.Path & "\sample.xlsx"
上記のコードを実行すると、実行している Excel ファイルと同じディレクトリにあるsample.xlsx
を開くことができます。
パスワード付きのワークブックを開く
パスワード付きのワークブックを開く場合は、Password
引数にパスワードを指定します。
Workbooks.Open("対象のファイルパス", Password:="パスワード")
上記のコードを実行すると、指定したパスワードで保護されたワークブックを開くことができます。
パスワードが間違っている場合は、エラーが出力されます。
読み取り専用でワークブックを開く
外部のエクセルファイルを変更する必要がなく、参照だけしたい場合は、読み取り専用でワークブックを開くことができます。
読み取り専用でワークブックを開く場合は、ReadOnly
引数にTrue
を指定します。
Workbooks.Open("対象のファイルパス", ReadOnly:=True)
上記のコードを実行すると、読み取り専用でワークブックを開くことができます。
誤って編集してしまうことを防ぐために、参照のみの場合は読み取り専用でワークブックを開くことをおすすめします。
読み取り専用でワークブックを開く方法については、以下のページで詳しく解説しています。
ワークブックを開く際の注意点
前述したコードを使ってワークブックを開くと、実際に新しいウィンドウで Excel が立ち上がります。
そのため、もし VBA コード中でエラーが発生し、処理が中断された場合、Excel が立ち上がったままになる可能性があります。
こういった状況を防ぐために、エラーが発生しても必ずワークブックは閉じる処理を追加することをおすすめします。
エラー発生時の対処方法については、以下のページで詳しく解説しています。
ワークブックを閉じる具体例
基本的な使い方
以下のコードは、sample.xlsx
を開いて、処理が終わったら閉じる例です。
Private Sub OpenWorkbook()
Dim wb As Workbook
Dim path As String
' 開きたいワークブックのパスを指定
path = "C:\Documents\Report.xlsx"
' ワークブックを開く
Set wb = Workbooks.Open(path)
' 何かの処理を行う
' ...
' 処理後、ワークブックを閉じる(変更を保存しない)
wb.Close SaveChanges:=False
End Sub
複数のワークブックを一括で処理する
以下のコードは、配列で指定した複数のワークブックに対して、1 ファイルずつ処理を行い、処理が終わったら閉じる例です。
Sub OpenMultipleWorkbooks()
Dim wb As Workbook
Dim files As Variant
Dim i As Integer
' 開きたいワークブックのリスト
files = Array("C:\Reports\Report1.xlsx", "C:\Reports\Report2.xlsx", "C:\Reports\Report3.xlsx")
' 配列内の各ファイルを開く
For i = LBound(files) To UBound(files)
Set wb = Workbooks.Open(files(i))
' 必要な処理を行う
' ...
' 処理後、ワークブックを閉じる(変更を保存せず)
wb.Close SaveChanges:=False
Next i
End Sub
まとめ
VBA を使用してワークブックを開く方法は、VBA の活用の幅を広げ、作業の自動化に非常に役立ちます。 コードをカスタマイズして、自分の作業に合わせて使ってみてください。