先日、いただいたリクエストに応えて、フォルダの階層構造を書き出してみた。
infoment.hatenablog.com
といっても、過去記事の焼き直しで、目新しいものは何もない。
ならば、もう少しだけ機能を拡張してみよう。
ということで今回は、ついでにファイル名も書き出してみることにした。
まず書き出しのため、先日準備したフォルダ下に、テスト用ファイルを作成。
次いで、ユーザー定義関数に「書き出し内容にファイル名を含めるか」のBoolean型変数を設けてみた。
Function Tree(folder_path As String, _ Optional contain_filename As Boolean = False) As Variant Select Case contain_filename Case True Tree = Split(CreateObject("wscript.shell").exec("cmd /c tree """ & folder_path & """ /f").stdout.readall, vbCrLf) Case False Tree = Split(CreateObject("wscript.shell").exec("cmd /c tree """ & folder_path & """").stdout.readall, vbCrLf) End Select End Function
先日とほぼ同じコードで、テストしてみよう。
Sub test() Dim arr As Variant arr = Tree("C:\Temp", True) Range("A1").Resize(UBound(arr) + 1) = WorksheetFunction.Transpose(arr) End Sub
結果がこちら。
おお、出来た!と思った直後、間髪を入れず、次のリクエストが届いた。
「書き出した各フォルダ名に、ショートカットが設定されていたら最高です」
そうですか、分かりました。次回に続きます。
参考まで。