VBAで指定したフォルダ以下のサブフォルダを含むファイルパスを出力する

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

コメント

タイトルとURLをコピーしました