再帰呼び出しで作ったフォルダ・ファイル一覧取得のロジックのメモです。
'-----------------------------------------
'関数名 :getFileNameList
'機能 :入力されたセルに入力されたフォルダから一覧を取得する
'-----------------------------------------
Sub getFileNameList()
Dim str対象フォルダパス As String
Dim intR As Integer
intR = 5
'---50000行ぐらい削除で初期化
Rows(intR & ":" & 50000).Delete
'---フォルダ一覧作成対象のフォルダパス(シートから取得)
str対象フォルダパス = Range("c2").Value
'---"\"マークが無ければ、つける
If Right(str対象フォルダパス, 1) <> "\" Then
str対象フォルダパス = str対象フォルダパス & "\"
End If
'---一覧取得実行
Call getFil(str対象フォルダパス, intR)
MsgBox ("完了")
End Sub
'-----------------------------------------
'関数名 :getFil
'機能 :入力されたフォルダからファイル名を取得。フォルダがあれば自分をそのフォルダをパラメータで再度呼び出す。
'-----------------------------------------
Sub getFil(str対象フォルダパス As String, intR As Integer)
Dim objFs As Object
Dim obj対象フォルダ As Object
Dim objサブフォルダ達 As Object
Dim objサブフォルダ As Object
Dim objファイル As Object
Set objFs = CreateObject("Scripting.FileSystemObject")
'---フォルダオブジェクト取得
Set obj対象フォルダ = objFs.getfolder(str対象フォルダパス)
'---まずは、サブフォルダ達オブジェクトを取得
Set objサブフォルダ達 = obj対象フォルダ.subfolders
'---サブフォルダオブジェクト毎に実行
For Each objサブフォルダ In objサブフォルダ達
'---サブフォルダパスを出力する
Range("b" & intR).Value = objサブフォルダ.Path
intR = intR + 1
'---サブフォルダパスを対象フォルダパスとして、一覧取得実行(再帰)
Call getFil(objサブフォルダ.Path, intR)
Next
'---ここまで来たらファイルを出力
Set objファイル達 = obj対象フォルダ.Files
For Each objファイル In objファイル達
Range("b" & intR).Value = Replace(objファイル.Path, objファイル.Name, "")
Range("c" & intR).Value = objファイル.Name
intR = intR + 1
Next
End Sub