본문 바로가기
엑셀/VBA

VBA로 해당 폴더 내 모든 하위 폴더까지 있는 모든 파일 이름 찾기

by 큐브빌드 2024. 11. 3.
반응형
Sub ListAllFilesInFolder()
    Dim FileSystem As Object
    Dim MainFolder As Object
    Dim SubFolder As Object
    Dim File As Object
    Dim RowNum As Long
    Dim FolderPath As String

    ' 대상 폴더 경로를 입력합니다.
    FolderPath = "C:\YourFolderPath" ' <- 여기에 원하는 폴더 경로 입력
    
    ' 파일 시스템 개체를 생성합니다.
    Set FileSystem = CreateObject("Scripting.FileSystemObject")
    Set MainFolder = FileSystem.GetFolder(FolderPath)

    ' 초기 시작 행 설정
    RowNum = 2
    ' 헤더 작성
    With ThisWorkbook.Sheets(1)
        .Cells(1, 1).Value = "Folder Path"
        .Cells(1, 2).Value = "File Name"
        .Cells(1, 3).Value = "File Path"
    End With

    ' 폴더 내 파일 리스트 생성
    Call ListFilesInSubfolders(MainFolder, RowNum)

    ' 개체 메모리 해제
    Set FileSystem = Nothing
    Set MainFolder = Nothing
End Sub

Sub ListFilesInSubfolders(Folder As Object, ByRef RowNum As Long)
    Dim SubFolder As Object
    Dim File As Object

    ' 현재 폴더의 파일 목록 기록
    For Each File In Folder.Files
        ThisWorkbook.Sheets(1).Cells(RowNum, 1).Value = Folder.Path
        ThisWorkbook.Sheets(1).Cells(RowNum, 2).Value = File.Name
        ThisWorkbook.Sheets(1).Cells(RowNum, 3).Value = File.Path
        RowNum = RowNum + 1
    Next File

    ' 하위 폴더 탐색
    For Each SubFolder In Folder.Subfolders
        Call ListFilesInSubfolders(SubFolder, RowNum)
    Next SubFolder
End Sub

 

첫 번째 시트에

 

모든 하위 폴더를 포함하여 존재하는 모든 파일이름을 엑셀에 작성해 줍니다.

반응형

댓글