今日は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