更新日:、 作成日:

VBA ワークブック名やパスを取得する

はじめに

Excel VBA マクロでワークブック名やパスを取得する方法を紹介します。

Workbook.Name プロパティから、ブック名を取得できます。

Workbook.FullName プロパティから、ブックの絶対パスを取得できます。

ActiveWorkbook オブジェクトから、アクティブブックを取得できます。

ブックを指定して取得するには「ワークブックを取得する」をご覧ください。

ブック名を取得する

ブックの次のプロパティから名前やパスを取得できます。

  • FullNameD:\Book1.xlsx 、絶対パスを取得します。ブックが保存されていないときは、仮のブック名です。
  • NameBook1.xlsx 、ブック名を取得します。ブックが保存されていないときは、仮のブック名です。保存するとファイル名と同じです。
  • PathD: 、ディレクトリのパスを取得します。ブックが保存されていないときは空です。

アクティブブック名を取得

アクティブブック名を取得するには ActiveWorkbook.Name を入力します。

アクティブブックのパスを取得するには ActiveWorkbook.FullName を入力します。

Dim s As String
s = ActiveWorkbook.FullName ' D:\Book1.xlsx
s = ActiveWorkbook.Name     ' Book1.xlsx
s = ActiveWorkbook.Path     ' D:
Debug.Print(s)

アクティブブックとは、開いているすべてのブックの中で一番手前に表示されているブックです。

ブックをアクティブにするには「ワークブックをアクティブにする」をご覧ください。

VBA を実行しているブック名を取得

VBA を実行しているブックを取得するには ThisWorkbook を入力します。

Dim s As String
s = ThisWorkbook.FullName
s = ThisWorkbook.Name
s = ThisWorkbook.Path
Debug.Print(s)

すべてのブック名を取得

Workbooks はコレクションになっているので、これをループしてすべてのブックを取得できます。

Dim wb As Workbook
For Each wb In Workbooks
    Debug.Print(wb.FullName)
    Debug.Print(wb.Name)
    Debug.Print(wb.Path)
Next

ブックと同じフォルダにある別ブックのパスを取得

VBA を実行しているブックなど、指定したブックと同じフォルダにある別ブックのパスを取得するには次のようにします。

Dim wb As Workbook
Set wb = ThisWorkbook ' VBA を実行しているブック

Dim folderPath As String
folderPath = wb.Path  ' ブックのディレクトリ

If folderPath = "" Then
    ' 保存されていないとき
    Exit Sub
End If

Dim filePath As String
filePath = folderPath & "\Book2.xlsx" ' ブックと同じフォルダの別ブックのパス

Call Workbooks.Open(filePath) ' ブックを開く