VBAでファイル一覧を取得する方法として、FileSystemObjectのGetFolderを使用することで実現できます。
FileSystemObjectは、ファイルシステムオブジェクトを操作するための標準ライブラリであり、ファイルやフォルダの作成や削除、コピー、移動などを簡単に行うことができます。
GetFolderメソッドを使用することで、指定したフォルダのファイル一覧を取得することができます。
ここでは、FileSystemObjectのGetFolderを使ってVBAでファイル一覧を取得する方法について説明します。
もくじ
【サンプルソース】指定したフォルダに存在するファイル名一覧の取得
以下は、FileSystemObjectのGetFolderを使用してファイル名一覧を取得するサンプルソースです。
Sub GetFileList()
Dim fso As Object
Dim folder As Object
Dim file As Object
Dim fileList As String
' FileSystemObjectの生成
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダパスを指定してフォルダオブジェクトを取得
Set folder = fso.GetFolder("D:\200_work\100_sample\AAA")
fileList = ""
' ファイル一覧の取得
For Each file In folder.Files
fileList = fileList & file.Name & vbCrLf
Next file
' オブジェクトの解放
Set file = Nothing
Set folder = Nothing
Set fso = Nothing
'ファイル一覧の表示
MsgBox fileList
End Sub
上記のサンプルソースでは、まずFileSystemObjectを生成しています。
GetFolderメソッドを使用して対象フォルダ「D:\200_work\100_sample\AAA」のフォルダオブジェクトを取得しています。
次に、対象フォルダに存在するファイル一覧を取得しています。
フォルダオブジェクトからファイルオブジェクトを1つずつ取り出し、ファイル名(file.Name)を取得しています。
そして、最後に取得したファイル名一覧をメッセージボックスで表示しています。
注意点としては、GetFolderメソッドに存在しないフォルダパスを指定するとエラーが発生します。
GetFolderで取得できるファイル一覧は、指定したフォルダ直下に存在するファイルのみです。
指定されたフォルダのサブフォルダ内のファイルは取得することはできません。
【サンプルソース】指定したフォルダに存在するファイルのパス一覧の取得
以下は、FileSystemObjectのGetFolderを使用してファイルパス一覧を取得するサンプルソースです。
Sub GetFilePathList()
Dim fso As Object
Dim folder As Object
Dim file As Object
Dim fileList As String
' FileSystemObjectの生成
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダパスを指定してフォルダオブジェクトを取得
Set folder = fso.GetFolder("D:\200_work\100_sample\AAA")
fileList = ""
' ファイル一覧の取得
For Each file In folder.Files
fileList = fileList & file.Path & vbCrLf
Next file
' オブジェクトの解放
Set file = Nothing
Set folder = Nothing
Set fso = Nothing
'ファイル一覧の表示
MsgBox fileList
End Sub
上記のサンプルソースでは、まずFileSystemObjectを生成しています。
GetFolderメソッドを使用して対象フォルダ「D:\200_work\100_sample\AAA」のフォルダオブジェクトを取得しています。
次に、対象フォルダに存在するファイル一覧を取得しています。
フォルダオブジェクトからファイルオブジェクトを1つずつ取り出し、ファイルパス(file.Path)を取得しています。
そして、最後に取得したファイルパス一覧をメッセージボックスで表示しています。
ファイル名を取得する場合は、「file.Name」を使います。
例えば、「A001.txt」というファイル名を取得できます。
ファイルパスを取得する場合は、「file.Path」を使います。
例えば、「D:\200_work\100_sample\AAA\A001.txt」というファイルパスを取得できます。
まとめ
VBAでFileSystemObjectのGetFolderを使用すれば、指定したフォルダ内に存在するファイル名やファイルパスを取得することができます。
欲しい情報によって、「file.Name」と「file.Path」を使い分けましょう。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

