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」キーを押下します。
結果はこんな感じです。
サンプル.xlsm
C:/VBA ファイル名取得方法/サンプル
C:/VBA ファイル名取得方法/サンプル/サンプル.xlsm
指定されたフォルダー内のファイルの一覧を取得する方法
今度は、指定されたフォルダー内のファイル一覧を取得する方法です。フォルダー内に以下のようなファイルがあったとします。
この中から、拡張子「.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でファイル名やファイル一覧を取得する方法を紹介しました。
ファイル操作やファイルの一覧を作るというのは実務ではよくあります。覚えておきましょう。
おつかれさまでした。