【Excel VBA】サブフォルダを列挙する方法

サブフォルダを列挙する方法について説明します。

サブフォルダを列挙する方法


サブフォルダを列挙するメソッド


サブフォルダを列挙するコードです。


VBAからコマンドプロンプトのDirコマンドを呼び出し、サブフォルダを列挙して配列で返却します。


'サブフォルダを列挙する
'dirPath:親フォルダのパス
'返却値:フォルダパス(配列)
Function DirEnumeration(dirPath As String)
'WshShellオブジェクトの作成
Dim wsh As Object: Set wsh = CreateObject("WScript.Shell")
'WshShellでDirコマンドを実行
Dim result As String
result = wsh.Exec("%ComSpec% /c " & "dir /s /b /ad " & """" & dirPath & """").StdOut.ReadAll
'WshShellオブジェクトを解放
Set wsh = Nothing
'結果を配列で返却
If Len(result) = 0 Then Exit Function
result = Left(result, Len(result) - 1)
DirEnumeration = Split(result, vbCrLf)
End Function

サンプルコード


先ほどのメソッドを利用して、対象フォルダ内のサブフォルダ一覧をアクティブシートへ出力するサンプルです。


'サブフォルダを列挙した結果をアクティブシートへ出力
Sub Macro1()
'シートの内容を消す
Cells.Clear
'入力画面を表示
Dim dirPath As String
dirPath = InputBox("抽出対象のフォルダパスを入力してください")
If dirPath = "" Then Exit Sub
'対象パスのサブフォルダを列挙
Dim result As Variant
result = DirEnumeration(dirPath)
'列挙結果をシートへ出力
If Not IsArray(result) Then
MsgBox ("サブフォルダが見つかりませんでした")
Exit Sub
End If
Range(Cells(1, 1), Cells(UBound(result) + 1, 1)) = WorksheetFunction.Transpose(result)
End Sub
人気ブログランキング

この記事へのトラックバック