Excelでファイルリストを取得する

今日はVBAのお勉強です。[ミュージック]フォルダのアーティスト、アルバム、曲名をワークシートにリスト出力します。曲名ファイルがカレントディレクトリの2段下にあるので、For Each文を3回ネストしています。

Public Sub get_music_list()
  Dim Obj, f, g, h As Object
  Dim DirName as String
  Set Obj = CreateObject("Scripting.FileSystemObject")
  Set DirName = Environ("UserProfile") & "\Music"
  Dim i, j As Long
  i = 1: j = 0
  
  For Each f In Obj.GetFolder(DirName).SubFolders
    For Each g In Obj.GetFolder(DirName & "\" & Obj.GetFolder(f).Name).SubFolders
        ActiveSheet.Cells(1, i).Value = Obj.GetFolder(f).Name
        ActiveSheet.Cells(2, i).Value = Obj.GetFolder(g).Name
        For Each h In Obj.GetFolder(DirName & "\" & Obj.GetFolder(f).Name & "\" & Obj.GetFolder(g).Name).Files
            ActiveSheet.Cells(3 + j, i) = h.Name
            j = j + 1
        Next h
        i = i + 1
        j = 0
        Set h = Nothing
    Next g
    Set g = Nothing
  Next f
  i = 0
  Set Obj = Nothing
  Set f = Nothing
End Sub

http://www.moug.net/tech/exvba/0060001.html
http://vba-geek.jp/blog-entry-52.html

ちなみにPowerShellでは、同じ様なことを以下のコマンドで可能です。

>cd $HOME\Music
>Get-ChildItem -Recurse -Name >C:\src\music.txt

http://www.atmarkit.co.jp/ait/articles/0808/22/news129.html