← コード一覧へ戻る
実務ブック

ブックのPath・FullName・Nameを使い分ける

開いているブックの保存先フォルダー・フルパス・ファイル名を並べて確認します。Path/FullName/Nameの違いと、未保存ブックの分岐を具体例で比べます。

実行前に確認

  • 読み取りとメッセージ表示だけの例です。保存・移動・名前変更は行いません。VBAを使えるデスクトップ版Excelと、組織で許可されたマクロ実行環境が必要です。
  • ActiveWorkbookは手前のブック、ThisWorkbookはこのコードを含むブックです。実行前に対象を確認してください。保護ビューなど特殊な画面はこの練習の対象外です。
  • 一度も保存していないブックはPathが空文字になります。Saved=Falseは「前回保存後に変更がある」場合も含むため、初回保存の判定には使いません。
  • この表はWindowsのローカル保存先の説明例です。クラウド上のブックの値をローカルパスと決めつけて文字列結合しないでください。
  • 公式資料とコード・表示例の整合性を確認していますが、Excel実機での実行は未検証です。練習用ブックで確認してください。

1サンプルコード

Sub Sample3042()
    Dim targetBook As Workbook
    Dim result As String

    ' 実行開始時に手前にあるブックを対象として保持する
    Set targetBook = ActiveWorkbook
    If targetBook Is Nothing Then
        MsgBox "対象のブックを開いてから実行してください。", vbExclamation
        Exit Sub
    End If

    result = "Name: " & targetBook.Name & vbCrLf
    If Len(targetBook.Path) = 0 Then
        result = result & "Path: (未保存のため空文字)" & vbCrLf _
            & "FullName: (保存先が未確定のため表示しません)"
    Else
        result = result & "Path: " & targetBook.Path & vbCrLf _
            & "FullName: " & targetBook.FullName
    End If
    MsgBox result, vbInformation, "対象ブックの名前と保存先"
End Sub

同じブックでも、返る文字は違う

説明例:C:\Practice\売上.xlsx を開いている場合。下の表はセルへの出力ではなく、メッセージに表示する値の比較です。

保存済みブックの表示例(Excel実機の実行結果ではありません)
プロパティ表示例使いたい場面
Name売上.xlsxファイル名だけを表示する
PathC:\Practice保存先フォルダーを調べる
FullNameC:\Practice\売上.xlsxファイル名まで含む保存先を確認する

未保存の新しいブックなら?

Nameはそのブックの名前です(例:Book1。表示名は環境や作成順で変わります)。Pathは空文字なので、このコードは「未保存のため空文字」と案内します。FullNameは保存先として使わず、「保存先が未確定のため表示しません」と案内します。

対象を取り違えない

マクロ.xlsmにコードを入れ、売上.xlsxを手前にして実行する例では、ActiveWorkbookは売上.xlsx、ThisWorkbookはマクロ.xlsmです。上のコードは最初に対象を変数へ保持します。

Pathの公式資料

Nameの公式資料

未保存ブックのPathとSavedの公式資料

ActiveWorkbook・ThisWorkbookの公式説明

図で見る名前と保存先の確認

イメージ図

同じ対象ブックから3種類の情報を読み取ります。未保存なら保存先の表示を分岐します。

  1. 対象を固定

    実行開始時のActiveWorkbookをtargetBookに保持

  2. 保存先を確認

    Pathが空文字なら未保存として案内

  3. 結果を表示

    保存済みはName・Path・FullNameを3行で比較

ブックの内容や保存先は変更しません。未保存時のFullNameの戻り値はこのコードでは読み取りません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する6つの手順で、コードの使い方を確認できます
  1. 1

    デスクトップ版Excelで練習用のマクロブックを.xlsmで保存し、Alt+F11→[挿入]→[標準モジュール]へコードを貼り付けます。

  2. 2

    比較する練習用のブックを開きます。例は C:\Practice\売上.xlsx です。これは説明用の架空の保存場所なので、実際は自分の練習用フォルダーへ保存してください。

  3. 3

    Excelの画面へ戻り、調べたいブックを手前にしてからAlt+F8でSample3042を実行します。一覧に出ない場合は「マクロの保存先」を「開いているすべてのブック」にします。

  4. 4

    保存済みならName・Path・FullNameの3行を下の比較表と照合します。ファイル名だけならName、フォルダーだけならPath、ファイルまで含む場所ならFullNameです。

  5. 5

    未保存の分岐を試すにはExcelで新しい空のブックを作り、保存せず手前にして同じマクロを実行します。Nameはそのブック名、Pathは空文字の案内、FullNameは表示しない案内になります。

  6. 6

    コードを入れたマクロブック自身を対象にしたい場合だけ、Set targetBook = ActiveWorkbookをSet targetBook = ThisWorkbookへ変更します。別ブックを手前にしても対象はマクロブックのままです。

使っている機能の公式ドキュメント(Microsoft Learn)