つらつら Excel VBA

私の備忘録です。

ディレクトリの再帰検索

'引数1 targetDir 対象ディレクトリパス
'引数2 extenstion 対象ファイルの拡張子を指定(例:*.csv)
'引数3 recursive サブディレクトリの検索(True:行う, False:行わない)

Public Sub FolderSearch(targetDir As String, extension As String, recursive As Boolean)
   
    Dim FSO As Object
    Dim folder As Object, subFolder As Object, file As Object
   
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set folder = FSO.GetFolder(targetDir)
   
    'ディレクトリ内のサブディレクトリを列挙
    If recursive = True Then
        For Each subFolder In folder.SubFolders
            Call FolderSearch(subFolder.Path, extension, recursive) '再帰呼び出し
        Next subFolder
    End If
   
    'カレントディレクトリ内のファイルを列挙
    For Each file In folder.Files
        '指定拡張子が合致、または無い場合
        If extension = "" Or file.Name Like extension Then
            '好きな処理

        End If
    Next file
   
    '終了処理
    Set folder = Nothing
    Set FSO = Nothing
   
End Sub