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でファイルシステムを扱う上で不可欠な基本となります。
【AI×就労支援】Neuro Dive(ニューロダイブ)で先端ITを学び、スペシャリストとしての就職を目指しませんか?
最後に宣伝をさせてください。
「AIやデータサイエンスを仕事にしたい」 「でも、独学には限界が…」
そんな方に知ってほしいのが、日本初の”先端IT特化型”就労移行支援『Neuro Dive』です。
IT職種への就職率80%超、職場定着率95%超という実績は、信頼の証。「学びたい」を「仕事」に繋げるプロフェッショナルです。
ご興味があれば、ぜひ公式サイトをチェックしてみてください。
