【Excel VBA】ブックのフルパス(保存場所とファイル名)を取得する3つのプロパティ

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.xlsxMacroBook.xlsmのように、拡張子を含んだファイル名を返します。

③ フルパスの取得: .FullName (推奨)

.FullNameプロパティは、フォルダパスとファイル名を結合した完全なフルパスを一度に返します。多くの場合、このプロパティを使うのが最も簡単で間違いがありません。フルパスが必要な場合は、.Path.Nameを組み合わせるよりも.FullNameを使いましょう。

④ 未保存ブックの注意点

If targetBook.Path = "" Then ...

新規作成してから一度も保存していないブック(”Book1″など)の場合、.Pathプロパティは空の文字列("")を返します。これを利用して、「このブックが保存済みかどうか」を判定することができます。


まとめ

ブックのパス情報を取得する3つのプロパティを正しく使い分けましょう。

  • .Path: フォルダの場所だけが必要な時に使う。
  • .Name: ファイル名だけが必要な時に使う。
  • .FullName: ファイルのフルパスが必要な時に使う。(ほとんどのケースでこれが最も便利

これらのプロパティは、ファイルの保存や読み込み、他のアプリケーションとの連携など、VBAでファイルシステムを扱う上で不可欠な基本となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次