VBA ファイル名・ファイル一覧を取得する方法 - Excel

VBAでファイル名やファイル一覧を取得する方法です。

ファイル操作はプログラムの基本ともいえますね。

ここでは VBAでファイル名・パスを取得する方法と共に、指定されたフォルダー内のファイル一覧を取得する方法 を紹介します。


ファイル名・パスを取得する方法

VBAが記述されたファイルのパスや名前を取得する場合は、以下の通りとなります。

ファイル名取得ThisWorkbook.Name
パス取得ThisWorkbook.Path
フルパス取得ThisWorkbook.FullName

サンプルソース

標準モジュールを作って以下のように記述します。

サンプルは「C:/VBA ファイル名取得方法/サンプル」に作成し、ファイル名は「サンプル.xlsm」としています。

Sub Macro1()
  ' ファイル名取得
  Debug.Print ThisWorkbook.Name
  ' パス取得
  Debug.Print ThisWorkbook.Path
  ' フルパス取得
  Debug.Print ThisWorkbook.FullName
End Sub

Debug.Print を使って、イミディエイトに出力します。実行ボタンを押下するか、「F5」キーを押下します。

VBA実行ボタン

結果はこんな感じです。

サンプル.xlsm
C:/VBA ファイル名取得方法/サンプル
C:/VBA ファイル名取得方法/サンプル/サンプル.xlsm

指定されたフォルダー内のファイルの一覧を取得する方法

今度は、指定されたフォルダー内のファイル一覧を取得する方法です。フォルダー内に以下のようなファイルがあったとします。

VBAファイル一覧取得

この中から、拡張子「.xlsx」だけをリスト化してみます。

サンプルソース

標準モジュールに以下のように記述します。

Sub Macro2()
  Dim Buf As String
  Dim Path As String
  ' パスを取得
  Path = ThisWorkbook.Path
  ' .xlsxファイル取得
  Buf = Dir(Path & "*.xlsx")
  Debug.Print "### " & Path & " 内の.xlsx一覧 ###"
  
  Do While Buf <> ""
    ' ファイル名と更新日時を取得
    Debug.Print Buf & " : " & FileDateTime(Path & "" & Buf)
    Buf = Dir()
  Loop
End Sub

まず Dir関数 を使って、ファイルがあるかどうかを取得します。

Buf = Dir(Path & "*.xlsx")

ファイルがあった場合 Loop してファイル名と更新日時を取得します。
FileDateTime関数を利用すると更新日時が取得できます。

Debug.Print Buf & " : " & FileDateTime(Path & "" & Buf)

再び Dir関数 を使って、ファイル名を取得します。

Buf = Dir()

それでは実行してみましょう。

実行ボタンを押下するか「F5」キーを押下します。

結果はこんな感じです。

### C:/VBA ファイル名取得方法/サンプル 内の.xlsx一覧 ###
Book1.xlsx : 2014/11/27 10:00:36
Book2.xlsx : 2014/11/27 10:13:03
Book3.xlsx : 2014/11/27 10:17:29

まとめ

VBAでファイル名やファイル一覧を取得する方法を紹介しました。

ファイル操作やファイルの一覧を作るというのは実務ではよくあります。覚えておきましょう。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。