VBAマクロで、処理中のブックと同じフォルダに新しいファイルを出力したり、開いているファイルの場所をログに記録したりする際には、そのブックの「フルパス」(ファイルの場所と名前を合わせた完全なパス)を取得する必要があります。
VBAには、このパス情報を取得するための便利なプロパティが用意されています。この記事では、.Path
、.Name
、そして最も便利な**.FullName
**という3つの主要なプロパティの違いと使い方を解説します。
3つの主要プロパティ
ブックのパス情報を取得するには、主に以下の3つのWorkbook
オブジェクトのプロパティを使い分けます。
プロパティ | 取得できる情報 | 例 (C:\Users\User\Documents\Report.xlsx の場合) |
.Path | フォルダのパス(末尾の\ なし) | C:\Users\User\Documents |
.Name | ファイル名(拡張子を含む) | Report.xlsx |
.FullName | フルパス(フォルダ+ファイル名) | C:\Users\User\Documents\Report.xlsx |
Google スプレッドシートにエクスポート
完成したVBAコード
以下が、マクロが書かれているブックを対象に、3つのプロパティを使ってそれぞれの情報を取得し、メッセージボックスに表示するサンプルコードです。
Sub ShowWorkbookPathInfo()
' 変数を宣言します
Dim targetBook As Workbook
' このマクロが書かれているブックを操作対象とする
Set targetBook = ThisWorkbook
' --- まだ一度も保存されていないブックの場合の考慮 ---
If targetBook.Path = "" Then
MsgBox "このブックはまだ一度も保存されていません。", vbInformation
Exit Sub
End If
' --- 各プロパティから情報を取得 ---
Dim folderPath As String
Dim fileName As String
Dim fullBookPath As String
' フォルダパスを取得 (.Path)
folderPath = targetBook.Path
' ファイル名を取得 (.Name)
fileName = targetBook.Name
' フルパスを取得 (.FullName) - 最も便利
fullBookPath = targetBook.FullName
' --- 結果をメッセージボックスでまとめて表示 ---
Dim message As String
message = "【ブックのパス情報】" & vbCrLf & vbCrLf & _
"フォルダパス (.Path):" & vbCrLf & folderPath & vbCrLf & vbCrLf & _
"ファイル名 (.Name):" & vbCrLf & fileName & vbCrLf & vbCrLf & _
"フルパス (.FullName):" & vbCrLf & fullBookPath
MsgBox message, vbInformation, "パス情報"
End Sub
コードのポイント解説
① フォルダパスの取得: .Path
.Path
プロパティは、ファイルが保存されているフォルダのパスのみを返します。重要な点として、このパス文字列の末尾には円マーク(\
)が含まれません。そのため、もし.Path
と.Name
を自前で連結してフルパスを作る場合は、myBook.Path & "\" & myBook.Name
のように、区切り文字を自分で追加する必要があります。
② ファイル名の取得: .Name
.Name
プロパティは、Report.xlsx
やMacroBook.xlsm
のように、拡張子を含んだファイル名を返します。
③ フルパスの取得: .FullName (推奨)
.FullName
プロパティは、フォルダパスとファイル名を結合した完全なフルパスを一度に返します。多くの場合、このプロパティを使うのが最も簡単で間違いがありません。フルパスが必要な場合は、.Path
と.Name
を組み合わせるよりも.FullName
を使いましょう。
④ 未保存ブックの注意点
If targetBook.Path = "" Then ...
新規作成してから一度も保存していないブック(”Book1″など)の場合、.Path
プロパティは空の文字列(""
)を返します。これを利用して、「このブックが保存済みかどうか」を判定することができます。
まとめ
ブックのパス情報を取得する3つのプロパティを正しく使い分けましょう。
.Path
: フォルダの場所だけが必要な時に使う。.Name
: ファイル名だけが必要な時に使う。.FullName
: ファイルのフルパスが必要な時に使う。(ほとんどのケースでこれが最も便利)
これらのプロパティは、ファイルの保存や読み込み、他のアプリケーションとの連携など、VBAでファイルシステムを扱う上で不可欠な基本となります。