엑셀 VBA를 사용하다 보면 특정 폴더 내 파일목록을 가져와 활용하고 싶은 경우가 많은데요.
이번 글에서는 VBA코드를 활용해서 폴더 내 파일리스트를 가져오는 방법을 소개하겠습니다.
개인적으로 유용하다고 생각되는 5가지 부분변경한 코드를 작성하였으니 참고하시길 바라며,
파워쿼리를 활용해서도 파일 내 파일명을 가져올 수 있으니 필요시 아래 첨부글을 살펴보세요~

<본문이동링크>
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
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. 실행결과 ⑤ _ 파일목록 가져오기(엑셀시트, 폴더명포함, 수정날짜포함)
- 파일/폴더명과 수정된 날짜가 차례로 출력됩니다.

'엑셀 > 엑셀 VBA' 카테고리의 다른 글
엑셀VBA 선택범위 내 도형/이미지 일괄 선택 (0) | 2023.04.25 |
---|---|
엑셀 VBA 자주쓰는 테이블 서식(테두리,음영) 자동화 (1) | 2023.04.24 |
엑셀 VBA 엑셀도형 자동삽입 및 추가 설정 방법 (1) | 2023.04.24 |
엑셀 VBA 오류 제어하는 방법(On Error GoTo) (0) | 2023.01.31 |
엑셀 VBA 오류 무시하는 방법 (0) | 2023.01.30 |