VBAで指定したフォルダ以下のサブフォルダを含むファイルパスを出力する。
サブフォルダを含む場合は再帰を使いたいのでFunctionを作成してファイルパスを出力させる。
Excel2010で確認。
Sub fileDialogTest()
Dim fd As FileDialog
' フォルダ選択ダイアログを表示する
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If Not fd.Show Then
Debug.Print 'File Dialog is Canceled'
Exit Sub
End If
' 選択したフォルダパスを作成したFunctionに渡す
loopTest (fd.SelectedItems(1))
End Sub
Private Function loopTest(fp As String)
Dim fso As New FileSystemObject
Dim f As File
Dim fd As Folder
' 選択したフォルダパスにあるファイル分ループする
For Each f In fso.GetFolder(fp).Files
' Immediate windowにファイルパスを出力する
Debug.Print f
Next
' 選択したフォルダパスにあるフォルダ分ループする
For Each fd In fso.GetFolder(fp).SubFolders
' 再帰で自分自身にフォルダパスを渡してサブフォルダの処理を行う
loopTest (fd)
Next
End Function

コメント