【ExcelVBA】サブフォルダ内も含めたファイル名の一覧出力(Scripting.FileSystemObject)

ExcelVBA, ファイルの操作

サブフォルダ内も含めたファイル名の一覧出力をする、サンプルマクロです。

◆出力結果の例◆
E:\opencv\opencv331\sources\apps\traincascade\traincascade.cpp
E:\opencv\opencv331\sources\apps\traincascade\traincascade_features.h
E:\opencv\opencv331\sources\apps\version\CMakeLists.txt
E:\opencv\opencv331\sources\apps\version\opencv_version.cpp
E:\opencv\opencv331\sources\apps\visualisation\CMakeLists.txt
E:\opencv\opencv331\sources\apps\visualisation\opencv_visualisation.cpp

イミディエイト画面に一行ずつ出力

Sub Sample()
 
    Call Recursive("E:\opencv\opencv331\sources\apps")
 
End Sub
 
Sub Recursive(Path As String)
    Dim SubF As Object
    Dim Buf As String
    
    Buf = Dir(Path & "\*.*")
    Do While Buf <> ""
        Debug.Print Path & "\" & Buf
        Buf = Dir()
    Loop
    
    With CreateObject("Scripting.FileSystemObject")
        For Each SubF In .GetFolder(Path).SubFolders
            Call Recursive(SubF.Path)
        Next SubF
    End With
End Sub
※3行目にフォルダパスを記入します。
※7行目のRecursiveプロシージャは、自分自身であるRecursiveプロシージャを再帰呼び出しすることによってフォルダパスからサブフォルダを取得していく構造になっています。