再帰的にサブフォルダを検索しファイルパスを取得する
GetFilePathList関数
指定フォルダとそのサブフォルダからファイルパターンに合致するファイルのパスを再帰的に取得し、リスト形式で返す関数。※ filePathListの引数には、System.Collections.ArrayList形式のオブジェクトを指定する必要があります。詳しくは実行方法をご参照ください。
※ ShowErrorMessage関数についてはリンク先をご参照ください。
'================================================== ' <summary> ' 指定フォルダからファイルパターンに合致するファイルのパスを ' リスト形式で取得する ' </summary> ' <param name="specifiedFolder">指定フォルダ</param> ' <param name="filePattern">ファイルパターン</param> ' <param name="containsSubFolder">サブフォルダを含める</param> ' <param name="filePathList">ファイルパスリスト</param> ' <remarks> ' filePatternは、*.拡張子(例:*.txt)の形式で指定する ' filePathListは、System.Collections.ArrayList形式で指定する ' </remarks> '================================================== Public Sub GetFilePathList(ByVal specifiedFolder As String, _ ByVal filePattern As String, _ ByVal containsSubFolder As Boolean, _ ByRef filePathList As Object) Dim GetFileName As String Dim subFolder As Object On Error GoTo Catch GetFileName = Dir(specifiedFolder &amp; "\" &amp; filePattern) Do While GetFileName <> "" Call filePathList.Add(specifiedFolder &amp; "\" &amp; GetFileName) GetFileName = Dir() Loop If containsSubFolder Then With CreateObject("Scripting.FileSystemObject") For Each subFolder In .GetFolder(specifiedFolder).SubFolders Call GetFilePathList(subFolder.path, _ filePattern, _ containsSubFolder, _ filePathList) Next subFolder End With End If Exit Sub Catch: Call ShowErrorMessage("GetFilePathList") End Sub
実行方法
'================================================== ' <summary> ' GetFilePathList関数のテスト ' </summary> '================================================== Sub TestGetFilePathList() Dim filePathList As Object Dim filePath As Variant Dim result As String Set filePathList = VBA.CreateObject("System.Collections.ArrayList") Call GetFilePathList("C:\Test", "*.txt", True, filePathList) For Each filePath In filePathList If result = "" Then result = filePath Else result = result &amp; vbCrLf &amp; filePath End If Next filePath MsgBox result End Sub
ディスカッション
ピンバック & トラックバック一覧
[…] ExcelVBA ファイルの操作 再帰的にサブフォルダを検索しファイルパスを取得…https://yjsproject.com/excelvba/file/getfilepathlist-001/指定フォルダとそのサブフォルダからファイルパターンに合致するファイルのパスを再帰的に取得し、リスト形式で返す関数。じゅんじゅんのIT備忘録 […]