엑셀/엑셀 VBA

엑셀 VBA 폴더 내 파일목록 가져오기

90년대생 직장인 2023. 4. 25. 22:09
반응형

엑셀 VBA를 사용하다 보면 특정 폴더 내 파일목록을 가져와 활용하고 싶은 경우가 많은데요.

이번 글에서는 VBA코드를 활용해서 폴더 내 파일리스트를 가져오는 방법을 소개하겠습니다.

개인적으로 유용하다고 생각되는 5가지 부분변경한 코드를 작성하였으니 참고하시길 바라며,

파워쿼리를 활용해서도 파일 내 파일명을 가져올 수 있으니 필요시 아래 첨부글을 살펴보세요~


<본문이동링크>

* 폴더 구성 예시

1. 코드예시 ① _ 파일목록 가져오기(직접실행창)

2. 실행결과 ① _ 파일목록 가져오기(직접실행창)

3. 코드예시 ② _ 파일목록 가져오기(엑셀시트)

4. 실행결과 ② _ 파일목록 가져오기(엑셀시트)

5. 코드예시 ③ _ 파일목록 가져오기(엑셀시트, 확장자 xlsx만)

6. 실행결과 ③ _ 파일목록 가져오기(엑셀시트, 확장자 xlsx만)

7. 코드예시 ④ _ 파일목록 가져오기(엑셀시트, 폴더명 포함)

8. 실행결과 ④ _ 파일목록 가져오기(엑셀시트, 폴더명 포함)

9. 코드예시 ⑤ _ 파일목록 가져오기(엑셀시트, 폴더명포함, 수정날짜포함)

10. 실행결과 ⑤ _ 파일목록 가져오기(엑셀시트, 폴더명포함, 수정날짜포함)

 

<참고할만한 글>

 

 

[엑셀 파워쿼리] 폴더 내 파일 리스트 가져오기

엑셀 파워쿼리 기능을 활용하면 폴더 내 파일 리스트를 VBA 코드 없이도 쉽게 불러올 수 있습니다. - 별도의 코딩 없이 폴더 내 파일 데이터를 가져올 수 있음 - 필터링 기능을 통해 원하는 파일

han8849.tistory.com

 

 

[엑셀 파워쿼리] 폴더 내 파일 합치기(병합하기)_기본

엑셀 파워쿼리 기능을 잘 활용하면 폴더 내 동일양식의 파일들을 하나의 파일로 병합할 수 있습니다. 매월 테이블로 정리된 자료를 합치거나 동일한 테이블을 하나의 테이블로 하나로 병합할

han8849.tistory.com


* 폴더 구성 예시

- 폴더 2개, 메모장 2개, 엑셀(xlsx) 3개 파일로 구성되어 있음

 

1. 코드예시 ① _ 파일목록 가져오기(직접실행창)

- 아래 코드는 폴더경로에 입력한 폴더 내 *.*의 파일명을 가져오는 코드입니다.

- 아래 예시는 "직접 실행 창"에 결과를 보여주는 코드로 필요시 예시 ②번과 같이 엑셀 시트에 입력할 수도 있음

 

Sub 파일목록가져오기()
    Dim 폴더경로, 파일명 As String
    
    폴더경로 = "C:\파일목록\" '폴더 경로 입력
    파일명 = Dir(폴더경로 & "*.*") '모든 파일 목록 가져오기
    
    Do While 파일명 <> ""
        Debug.Print 파일명 '파일 이름 출력
        파일명 = Dir '다음 파일 이름 가져오기
    Loop
End Sub

 

2. 실행결과 ① _ 파일목록 가져오기(직접실행창)

<코드 실행 결과_①>

 

3. 코드예시 ② _ 파일목록 가져오기(엑셀시트)

 

- 아래 코드는 엑셀시트의 A열에 파일명을 차례로 불러오는 코드입니다.

Sub 파일목록가져오기_엑셀시트()

    Dim 폴더경로, 파일명 As String
    Dim i As Integer
        
    폴더경로 = "C:\파일목록\" '폴더 경로 입력
    파일명 = Dir(폴더경로 & "*.*") '모든 파일 목록 가져오기
    
    i = 1
    
    Do While 파일명 <> ""
        Cells(i, 1) = 파일명 '파일 이름 출력
        i = i + 1
        파일명 = Dir '다음 파일 이름 가져오기
    Loop
    
End Sub
반응형

4. 실행결과 ② _ 파일목록 가져오기(엑셀시트)

- 확장자가 있는 파일들이 A열에 차례로 출력됩니다.

 

5. 코드예시 ③ _ 파일목록 가져오기(엑셀시트, 확장자 xlsx만)

- 아래 코드는 엑셀시트 A열에 확장자 xlsx인 파일만 불러오는 코드입니다.

Sub 파일목록가져오기_엑셀시트_확장자xlsx만()

    Dim 폴더경로, 파일명 As String
    Dim i As Integer
        
    폴더경로 = "C:\파일목록\" '폴더 경로 입력
    파일명 = Dir(폴더경로 & "*.xlsx") '모든 파일 목록 가져오기
    
    i = 1
    
    Do While 파일명 <> ""
        Cells(i, 1) = 파일명 '파일 이름 출력
        i = i + 1
        파일명 = Dir '다음 파일 이름 가져오기
    Loop
    
End Sub

 

6. 실행결과 ③ _ 파일목록 가져오기(엑셀시트, 확장자 xlsx만)

- 확장자가 xlsx 파일만 출력되었습니다.

 

7. 코드예시 ④ _ 파일목록 가져오기(엑셀시트, 폴더명 포함)

- 아래 코드는 확장자가 있는 파일과 폴더명까지 같이 시트 A열에 불러오는 코드입니다.

Sub 파일목록가져오기_엑셀시트_폴더명포함()
    Dim 폴더경로, 파일명 As String
    Dim i As Integer
    
    폴더경로 = "C:\파일목록\" '폴더 경로 입력
    파일명 = Dir(폴더경로 & "*", vbDirectory) '모든 폴더 목록 가져오기
    
    i = 1
    
    Do While 파일명 <> ""
        If 파일명 <> "." And 파일명 <> ".." Then '상위 폴더 제외
            Cells(i, 1) = 파일명 '폴더 이름 출력
            i = i + 1
        End If     
        파일명 = Dir '다음 폴더 이름 가져오기
    Loop
    
End Sub
728x90

8. 실행결과 ④ _ 파일목록 가져오기(엑셀시트, 폴더명 포함)

- 테스트폴더 2개가 추가되었습니다.

 

9. 코드예시 ⑤ _ 파일목록 가져오기(엑셀시트, 폴더명포함, 수정날짜포함)

- 아래코드는 확장자가 있는 파일, 폴더명을 A열에 출력하고, 수정된 날짜를 B열에 추가하는 코드입니다.

Sub 파일목록가져오기_엑셀시트_폴더명포함_수정날짜포함()
    Dim 폴더경로, 파일명 As String
    Dim i As Integer
    
    폴더경로 = "C:\파일목록\" '폴더 경로 입력
    파일명 = Dir(폴더경로 & "*", vbDirectory) '모든 폴더 목록 가져오기
    
    i = 1
    
    Do While 파일명 <> ""
        If 파일명 <> "." And 파일명 <> ".." Then '상위 폴더 제외
            Cells(i, 1) = 파일명 '폴더 이름 출력
            Cells(i, 2) = Format(FileDateTime(폴더경로 & 파일명), "yyyy-mm-dd") '파일 작성 날자 출력
            i = i + 1
        End If
        파일명 = Dir '다음 폴더 이름 가져오기
    Loop
    
End Sub

 

10. 실행결과 ⑤ _ 파일목록 가져오기(엑셀시트, 폴더명포함, 수정날짜포함)

- 파일/폴더명과 수정된 날짜가 차례로 출력됩니다.

 

반응형