未分類

【ExcelVBA】選択したフォルダ以下のサブフォルダを含むフォルダ内のファイルそれぞれに対して処理するマクロ

Sub Main()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")

    'フォルダを選択させる
    Dim strPath As String ' 選択したフォルダのパス
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = "初期パス"
        If .Show = True Then
            strPath = .SelectedItems(1)
        End If
    End With
    
    If strPath = "" Then
        MsgBox "フォルダを選択してください"
        Exit Sub
    End If
    
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    Call RecursiveShori(FSO.GetFolder(strPath))

End Sub


Sub RecursiveShori(Folder)

    Dim Subfolder As Object
    
    For Each Subfolder In Folder.SubFolders
        Call RecursiveShori(Subfolder)
    Next Subfolder
    
    Dim File As Object
    For Each File In Folder.Files
        'TODO ここに書くファイルに対する処理を記載する
        Debug.Print File.Name
    Next File

End Sub



-未分類