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
コメント