サブフォルダを含むフォルダとファイル名の一覧を取得

サブフォルダを含むフォルダとファイル名の一覧を取得する。

VBAで指定したフォルダ内にあるサブフォルダ内を含めたすべてのフォルダとファイルを一覧で取得します。

一覧の取得にはFileSystemObjectのGetFolderメソッドを利用した方法を掲載しています。
フォルダ内のサブフォルダを含めたすべてのフォルダ、ファイルを取得するには、GetFolderメソッドのSubFoldersプロパティを再帰的に呼び出して使うことですべてのフォルダ、ファイルを取得することができます。

このページのサンプルコードに記載している処理はフォルダ、ファイル名を取得した順番に表示しているだけですので、上位フォルダから下位フォルダに順次取得、表示させるソート処理はしていません。
ソートした形で取得したい場合はリンク先に紹介しているコードを参考にしてください。
 サブフォルダを含めたフォルダとファイル名の一覧をソートして取得


'******************************************************************
' サブフォルダを含めたフォルダ、ファイルを一覧を取得
'******************************************************************
Sub getAllFileList()

    'フォルダを指定
    Dim sRootFolder  As String
    sRootFolder = "C:\VBA\List\"
    
    'FileSystemObjectオブジェクトの作成
    Dim oFSO As Object
    Set oFSO = CreateObject("Scripting.FileSystemObject")
   
    '指定のフォルダから再起的にフォルダの中を情報を取得
    Call getObjectList(oFSO.GetFolder(sRootFolder))
    
End Sub

'******************************************************************
' フォルダチェック(サブフォルダがあれば再帰的に呼び出して実行)
'------------------------------------------------------------------
'  第1引数:フォルダオブジェクト
'******************************************************************
Sub getObjectList(getObjDir As Object)

    '対象フォルダにサブフォルダがあれば再帰的に処理し情報を取得
    Dim oSubDir As Object
    For Each oSubDir In getObjDir.SubFolders
        Call getObjectList(oSubDir)
    Next
    
    
    '対象フォルダにサブフォルダがなければフォルダのファイル情報を取得
    Debug.Print getObjDir.Path
    '各ファイル名を取得
    Dim oFile As Object
    For Each oFile In getObjDir.Files
        Debug.Print " └" & oFile.Name
    Next

End Sub

 ■実行結果