VBAでファイル名を取得|基本と応用テクニック

ExcelのVBA(Visual Basic for Applications)を使って、ファイル名を取得する方法について解説します。

目次

基本的なファイル名の取得方法

プログラム実行ファイル自身の名前を取得する

VBAで作成したマクロが保存されているExcelファイル(ワークブック)の名前を取得する基本的な方法です。ThisWorkbook.Nameというプロパティを使用します。

Sub GetThisWorkbookName()
    MsgBox ThisWorkbook.Name
End Sub

このコードを実行すると、メッセージボックスに現在のワークブックの名前が表示されます。

別の開いているファイルの名前を取得する

特定の開いているExcelファイルの名前を取得する方法です。Workbooks("ファイル名").Nameというプロパティを使用します。

Sub GetSpecificWorkbookName()
    MsgBox Workbooks("Sample.xlsx").Name
End Sub

このコードを実行すると、”Sample.xlsx”という名前のワークブックが開いている場合、その名前がメッセージボックスに表示されます。ただ、そのファイル名のワークブックが開かれていない場合はエラーが出るのでエラー処理などが必要となります。

アクティブなファイル(ブック)の名前を取得する

編集中のExcelファイル(アクティブブック)の名前を取得する方法です。ActiveWorkbook.Nameというプロパティを使用します。

Sub GetActiveWorkbookName()
    MsgBox ActiveWorkbook.Name
End Sub

このコードを実行すると、現在編集中のワークブックの名前がメッセージボックスに表示されます。

応用テクニック

開いている全てのファイルの名前を取得する

複数のExcelファイルが開いている場合、それら全ての名前を一括で取得する方法です。For EachループとWorkbooksコレクションを使用します。

Sub GetAllOpenWorkbooks()
    Dim wb As Workbook
    For Each wb In Workbooks
        MsgBox wb.Name
    Next wb
End Sub

このコードを実行すると、開いている全てのワークブックの名前が順番にメッセージボックスに表示されます。

Dir関数で特定のファイル名を取得する

Dir関数を使用して、特定のディレクトリ(フォルダ)に存在するファイル名を取得する方法です。

Sub GetFileNameWithDir()
    Dim Filename As String
    Filename = Dir("C:\Path\To\Your\File.xlsx")
    MsgBox Filename
End Sub

このコードを実行すると、指定したパスに存在するファイルの名前がメッセージボックスに表示されます。存在しない場合は、何も表示されません。

Dir関数とワイルドカードで任意のファイルを開く

Dir関数とワイルドカード(*)を組み合わせて、部分一致するファイル名でファイルを開く方法です。

Sub OpenFileWithWildcard()
    Dim Filename As String
    Filename = Dir("C:\Path\To\Your\Files\Sample*")
    Workbooks.Open ("C:\Path\To\Your\Files\" & Filename)
End Sub

このコードを実行すると、”Sample”で始まる名前のファイルが開きます。

VBAでファイル名を取得に関するFAQ

Q:ThisWorkbook.NameActiveWorkbook.Nameの違いは何ですか?

A:ThisWorkbook.Nameは、マクロコードが格納されているワークブックの名前を返します。一方で、ActiveWorkbook.Nameは現在アクティブ(選択されている)なワークブックの名前を返します。この二つは、同じワークブックがアクティブな場合には同じ値を返しますが、異なるワークブックがアクティブな場合には異なる値を返します。

Q:Dir関数でファイルが見つからない場合、どうなりますか?

A:Dir関数で指定したパスにファイルが存在しない場合、関数は空の文字列(””)を返します。この情報を用いて、ファイルが存在するかどうかをプログラム内で判断することができます。

Q:Workbooksコレクションで取得できるファイル名は、フルパスですか?

A:いいえ、Workbooksコレクションで取得できるのはファイル名のみで、フルパスではありません。フルパスを取得するには、Workbooks("ファイル名").FullNameというプロパティを使用します。

Q:Dir関数とワイルドカードを使って複数のファイルを一度に開くことはできますか?

A:はい、それが可能です。Dir関数をループ内で使用することで、ワイルドカードに一致する複数のファイルを一度に開くことができます。

Q:VBAでファイル名を取得する際のエラーハンドリングはどうすればいいですか?

A:On Error Resume NextOn Error GoToステートメントを使用して、エラーが発生した場合の処理を記述することが一般的です。例えば、指定したファイルが存在しない場合には、エラーメッセージを表示するような処理が考えられます。

Q:VBAで取得したファイル名をExcelのセルに出力する方法は?

A:Cells(row, column).ValueRange("A1").Valueなどのプロパティを使用して、取得したファイル名をExcelの特定のセルに出力することができます。

Q:特定のフォルダ内のすべてのファイル名を取得する方法は?

A:Dir関数やFileSystemObjectを使用して、特定のフォルダ内のすべてのファイル名を取得することができます。これらの方法は、特に大量のファイルを一括で処理する際に非常に便利です。

関連動画

まとめ

VBAを使用してExcelのファイル名を取得する方法は多く、その用途も様々です。この記事で紹介した基本的な方法から応用テクニックまで、しっかりと理解し、自分のニーズに合わせて活用してください。

Excelのショートカットキーの練習

当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。

下のスタートボタンを押して練習モードに入ります。
STARTSTOP
※入力モード切り替え ctrl + shift + alt + space
PRE
NEXT
現在の問題をリストから除外
除外したリストをリセット
現在の除外状況のURL取得
コピー
ガイドモード
リピートモード

※推奨ブラウザ Google Chrome

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