フォルダの階層構造を書き出してみる

職場で、こんなリクエストをいただいた。
「指定パス以下のフォルダについて、階層構造をExcelに書き出せませんか」

ただ羅列するのではなく、階層構造が分かるように書き出せと?
取り組んでみた。
f:id:Infoment:20200705123344p:plain

テスト用に、Cドライブ下にフォルダを幾つか準備した。
f:id:Infoment:20200705123504p:plain

書き出しのイメージとしては、こんな感じだろうか。
f:id:Infoment:20200705123744p:plain

ところが色々調べてみるうちに、ディレクトリやファイルをツリー状に表示する「Tree」というコマンドがあることを知った。何だ、良いのがあるじゃないか。

そこで、以前紹介したこちら ↓ の三番目の方法を応用してみた。
infoment.hatenablog.com

Function Tree(folder_path As String) As Variant
    Tree = Split(CreateObject("wscript.shell").exec("cmd /c tree """ & folder_path & """").StdOut.ReadAll, vbCrLf)
End Function

それでは、テストしてみよう。

Sub test()
    Dim arr As Variant
        arr = Tree("C:\Temp")
        Range("A1").Resize(UBound(arr) + 1) = WorksheetFunction.Transpose(arr)
End Sub

結果が ↓ こちら。
f:id:Infoment:20200705125201p:plain

見た目もそんなに悪くないし、良いかも。

参考まで。