フォルダの奥深くまで検索してみよう

スポンサーリンク
この記事は約3分で読めます。

再帰呼び出しって聞いたことありますか?

ある処理の中で、自分自身を呼び出す処理のことをいいます。

今回はこの考え方を使って、指定したフォルダ内を検索し、サブフォルダがあったらどんどん下層へ進んでいき、最下層までたどり着いたら、指定したフォルダへ戻って、次のサブフォルダを探す。

次のサブフォルダがあれば、同じように最下層めがけて進んでいく、という繰り返し処理を行います。

使用される際は、そちらの環境で十分テストのうえ使用してください。

VBAのコードはこちら。

Public Sub SubFolderSearch(strTgtFld As String)
Dim Fso As Object
Dim objFld As Object
Dim objSubFld As Object

Set Fso = CreateObject("Scripting.FileSystemObject")
Set objFld = Fso.GetFolder(strTgtFld)

'フォルダ内のサブフォルダを列挙
For Each objSubFld In objFld.SubFolders

    Debug.Print objSubFld.Path
    
    '再帰呼び出し
    SubFolderSearch objSubFld.Path
Next objSubFld
End Sub
Sub test()

Call SubFolderSearch("C:\フォルダ名")
End Sub

使い方ですが、Call SubFolderSearch(“C:\フォルダ名”)の「 C:\フォルダ名 」に検索対象のフォルダのパスを入力し、実行してください。

ビジュアル・ベーシック・エディターのイミディエイトウィンドウに実行結果が出力されます。


今回、和休のパソコンのEドライブを指定して実行した例です。

Sub test()

Call SubFolderSearch("e:\")
End Sub

結果

E:\3の倍数と3がつく数字のときアホになる
E:\フォルダの奥深くまで検索してみよう
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー1
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー1\新しいフォルダー1-1
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー1\新しいフォルダー1-1\新しいフォルダー1-1-1
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー1\新しいフォルダー1-2
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー1\新しいフォルダー1-2\新しいフォルダー1-2-1
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー1\新しいフォルダー1-2\新しいフォルダー1-2-2
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー1\新しいフォルダー1-2\新しいフォルダー1-2-3
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー1\新しいフォルダー1-3
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー2
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー2\新しいフォルダー2-1
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー2\新しいフォルダー2-2
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー2\新しいフォルダー2-3
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー2\新しいフォルダー2-4
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー2\新しいフォルダー2-4\新しいフォルダー2-4-1
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー2\新しいフォルダー2-4\新しいフォルダー2-4-1\新しいフォルダー2-4-1-1
E:\フォルダの奥深くまで検索してみよう\新しいフォルダー3
E:\事業所郵便番号をIME辞書に登録するよ
E:\元年表記
E:\起算日から6月経過しているか調べる
E:\連番を振ろう

コメントをどうぞ!