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
コメント