更新日:、 作成日:
VBA ワークブックを開く
はじめに
Excel VBA マクロでワークブックを開く方法を紹介します。
Workbooks.Open メソッドから、ブックを開けます。テキストファイルや CSV ファイルも開けます。
Application.GetOpenFilename メソッドから、ファイルを開くダイアログを表示できます。
ブックを開く
ブックを開くには Workbooks.Open("D:\Book2.xlsx") または Workbooks.Open("Book2.xlsx") のように入力します。大文字と小文字は区別しません。
Dim wb As Workbook
Set wb = Workbooks.Open("D:\Book1.xlsx") ' ブックを開く
Set wb = Workbooks.Open("Book1.xlsx") ' ブックを開く
Debug.Print(wb.FullName)
ファイル名だけ指定したときのパスはカレントディレクトリです。カレントディレクトリの既定値は、Excel のオプションから保存の「既定のローカルファイルの保存場所」です。
開いたブックがアクティブになります。すでに開いているブックを開いたときは、そのブックがアクティブになります。
違うパスにある同じファイル名のブックを開いたときはなにもしないで、Nothing を返します。Excel の仕様で同じ名前のブックを同時に開くことはできません。
ブックを開いた後に VBA を実行しているブックをアクティブにするには ThisWorkbook.Activate を入力します。
Call Workbooks.Open("D:\Book2.xlsx") ' 開いたブックがアクティブになる
ThisWorkbook.Activate ' VBA を実行しているブックをアクティブ
指定したファイルが存在しないときは「エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです。」が発生します。
スポンサーリンク
ファイルを開く
ブックを開くのと同じ方法でテキストファイルや CSV ファイルを開けます。
Dim wb As Workbook
Set wb = Workbooks.Open("D:\Text.txt") ' テキストファイルを開く
Set wb = Workbooks.Open("Comma.csv") ' CSV ファイルを開く
Debug.Print(wb.FullName)
ファイルを開いた時もそのファイル名がブック名になります。
ファイルを開くダイアログを表示する
ファイルを開くダイアログから選択したファイルのパスを取得できます。
ファイルを開くダイアログを表示するには Application.GetOpenFilename メソッドを使用します。
戻り値に選択したファイルの絶対パスを返します。キャンセルすると False を返します。
Dim filePath As Variant
filePath = Application.GetOpenFilename ' ダイアログを表示
If filePath = False Then
Exit Sub ' キャンセル
End If
' 開く
Call Workbooks.Open(filePath) ' ブックを開く
ダイアログは開くファイルのパスを取得するだけで開いてはいません。ダイアログを表示した後に開く処理をする必要があります。
ファイルを選択すると、カレントディレクトリがそのパスになります。
ブックのパスを取得する
開いたブックのパスを取得するには Workbook.FullName のように入力します。
Dim wb As Workbook
Set wb = Workbooks.Open("D:\Book2.xlsx") ' ブックを開く
Dim s As String
s = wb.FullName ' D:\Book2.xlsx
s = wb.Name ' Book2.xlsx
s = wb.Path ' D:
Debug.Print(s)
開いたブックを編集する
Open の戻り値から開いたブックを取得できます。
Dim wb As Workbook
Set wb = Workbooks.Open("D:\Book2.xlsx") ' 戻り値から開いたブックを取得
' そのブックを編集
wb.Sheets(1).Range("A1").Value = "編集"
スポンサーリンク