66本目 全サブフォルダをループ(再帰)

VBA100本ノック

VBA100本ノック 66本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ


問題

#VBA100本ノック66本目
ブック自身のあるフォルダ以下の全サブフォルダを検索し、自身と同一名称(拡張子含めて)のファイルを探してください。
同一名称のファイルが見つかったら、シートに出力してください。
・A列:フルパス
・B列:更新日時
・C列:ファイルサイズ
※シートは任意
フォルダ配下の全サブフォルダが対象です。
サブフォルダの中にあるサブフォルダの中も検索してください。

※動画は以下条件に変更して作成しております

解答

Sub ノック66本目()
    Dim wb As Workbook: Set wb = ThisWorkbook
    Dim ws As Worksheet: Set ws = wb.ActiveSheet
    Dim objFSO As New FileSystemObject
    Dim i As Long
    ws.Range("A1") = "フルパス"
    i = 2
    Call フォルダを指定してサブフォルダがなくなるまで再帰(objFSO.GetFolder(wb.Path), i)
    
End Sub

Sub aa(Fol As Folder, i As Long)

    Dim f As File
    For Each f In Fol.Files
        Cells(i, 1) = f.Path
        i = i + 1
    Next
    
    Dim Fola As Folder
    For Each Fola In Fol.SubFolders
        Call フォルダを指定してサブフォルダがなくなるまで再帰(Fola, i)
    Next

End Sub

■考え方・流れ
0:00 冒頭・問題確認
2:20 再帰って何ですか?
4:43 再帰の処理の流れ

新人君
新人君

初めての再帰の
問題ですね!

ブチョ
ブチョ

俺は小学校の時から
知ってたけど?

新人君
新人君

そうなんだ。

再帰って何ですか?

さて!じゃあまずは…
再帰ってなに???から始めるぞ!!

結論↓こいつですわ。。。

イメージはこんな感じ!!

どういう時に使うか??
それはね……

何回ループをネストすればいいかわからんような時!!
イメージとしては、「中に何がいくつ入ってるかわからんフォルダ」を全てループしたい!時を
想像してもらえたらいいかな!

最初はイメージでOKだ!!

再帰の処理の流れ

よし!そしたらお次!
再帰がどんな処理の流れになるかを見て行くぞ!!!

と!!思ったんだが…

だけど…さすがにこの問題は…
動画を見てもらった方がいいわ!!!wwwwww

F8でどう動くかを確認してるから、それを見てくれ!!www

こんな感じで、実際のコードと実際のフォルダを比較しながら進めてるからね!!

すまんが今日のブログはここまでだ!!!

動画ならではの再帰のイメージの付け方となってるから、
良かったら確認してみてくれよな!!

ブチョ
ブチョ

お疲れさままままMAX!

新人君
新人君

お疲れさまでした!

あとがたり

おはこんばんちは。uぷ主です。
66本目、初めての再帰の問題でした…

いやいや、すまん!!が…www
これはブログでどうこう説明できる内容ではなかった…。。

動画で見たら一発やからね!!

こういう、動画ならではの伝え方をできるから動画っていいよね(語彙力)

ブログとか、静止画とかで再帰を説明できる気がせんwww

やってる人すごいっすねww

コメント

タイトルとURLをコピーしました