ブックの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 を開いている場合。下の表はセルへの出力ではなく、メッセージに表示する値の比較です。
| プロパティ | 表示例 | 使いたい場面 |
|---|---|---|
| Name | 売上.xlsx | ファイル名だけを表示する |
| Path | C:\Practice | 保存先フォルダーを調べる |
| FullName | C:\Practice\売上.xlsx | ファイル名まで含む保存先を確認する |
未保存の新しいブックなら?
Nameはそのブックの名前です(例:Book1。表示名は環境や作成順で変わります)。Pathは空文字なので、このコードは「未保存のため空文字」と案内します。FullNameは保存先として使わず、「保存先が未確定のため表示しません」と案内します。
対象を取り違えない
マクロ.xlsmにコードを入れ、売上.xlsxを手前にして実行する例では、ActiveWorkbookは売上.xlsx、ThisWorkbookはマクロ.xlsmです。上のコードは最初に対象を変数へ保持します。
図で見る名前と保存先の確認
イメージ図同じ対象ブックから3種類の情報を読み取ります。未保存なら保存先の表示を分岐します。
対象を固定
実行開始時のActiveWorkbookをtargetBookに保持
保存先を確認
Pathが空文字なら未保存として案内
結果を表示
保存済みはName・Path・FullNameを3行で比較
ブックの内容や保存先は変更しません。未保存時のFullNameの戻り値はこのコードでは読み取りません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する6つの手順で、コードの使い方を確認できます
- 1
デスクトップ版Excelで練習用のマクロブックを.xlsmで保存し、Alt+F11→[挿入]→[標準モジュール]へコードを貼り付けます。
- 2
比較する練習用のブックを開きます。例は C:\Practice\売上.xlsx です。これは説明用の架空の保存場所なので、実際は自分の練習用フォルダーへ保存してください。
- 3
Excelの画面へ戻り、調べたいブックを手前にしてからAlt+F8でSample3042を実行します。一覧に出ない場合は「マクロの保存先」を「開いているすべてのブック」にします。
- 4
保存済みならName・Path・FullNameの3行を下の比較表と照合します。ファイル名だけならName、フォルダーだけならPath、ファイルまで含む場所ならFullNameです。
- 5
未保存の分岐を試すにはExcelで新しい空のブックを作り、保存せず手前にして同じマクロを実行します。Nameはそのブック名、Pathは空文字の案内、FullNameは表示しない案内になります。
- 6
コードを入れたマクロブック自身を対象にしたい場合だけ、Set targetBook = ActiveWorkbookをSet targetBook = ThisWorkbookへ変更します。別ブックを手前にしても対象はマクロブックのままです。