转自:http://www.k1simplify.com/vba/tipsleaf/leaf280.html
自分で自分を呼び出す、再帰呼び出しのサンプルです。 再帰呼び出しは C 等では良く使う手法です。 サンプルではサブフォルダを含めて、ファイルの一覧をフォルダを指定して 取得しています。 File の一覧をセルに入力します。 File の一覧や Folder の一覧を取得する部分は、「File / Folder の一覧を取得する」 を参照してください。 cnt と Pop は パブリック宣言してあります。 Popはフォルダの階層をカウントしていて、File 一覧を階層的に表示するために 使用しています。 example13 をダウンロードして動作を確認してください。
Sub ListUp(FolderSpec)
Dim File_Collection As Object
Dim File_List As Variant
Dim Folder_Collection As Object
Dim Folder_List As Variant
Set File_Collection = _
CreateObject("Scripting.FileSystemObject") _
.GetFolder(FolderSpec).Files
'Foldor の名前をセルに入力
Cells(cnt, Pop) = FolderSpec
cnt = cnt + 1
For Each File_List In File_Collection
Cells(cnt, Pop + 1) = File_List.Name
cnt = cnt + 1
Next
Set Folder_Collection = _
CreateObject("Scripting.FileSystemObject") _
.GetFolder(FolderSpec).SubFolders
For Each Folder_List In Folder_Collection
Pop = Pop + 1
ListUp FolderSpec & "\" & Folder_List.Name
Next
Pop = Pop - 1
End Sub