• 최초 작성일: 2000-09-07
  • 최종 수정일: 2026-09-30
  • 조회수: 10 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 파일 검색하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

VBA 함수 중에 Dir 이라는 아주 재미있는 함수가 있습니다. 도움말을 인용하자면, "지정한 패턴이나 파일 속성, 또는 드라이브 볼륨 레이블과 일치하는 파일, 디렉토리, 폴더 이름을 나타 내는 String을 반환"한다고 되어 있군요.

먼 소린지 이해가 안 가시지요? ^^ 쉽게 말하자면 파일을 검색하는 기능을 수행하는 함수입니다. 아래의 버튼을 누르세요.

검색할 폴더를 입력하면 해당 폴더 내에 있는 모든 파일들의 크기, 작성일자 등에 대한 정보들이 시트에 주욱 리스팅이 되지요? 코드를 살펴보도록 하겠습니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

파일 검색하기

핵심 요약: Dir 함수로 파일 검색

Dir(폴더)로 첫 번째 파일을 찾고 Dir()을 반복 호출하면 폴더 안의 모든 파일을 차례로 읽을 수 있습니다.

  • 1단계: InputBox로 폴더를 입력받고 Trim과 \ 붙이기로 정리합니다.
  • 2단계: Dir(폴더)로 첫 파일을, Dir()로 다음 파일들을 읽습니다.
  • 3단계: FileLen과 FileDateTime으로 크기와 작성일자를 기록하고 정렬합니다.

Step 1: 파일 목록 만들기 코드

Sub ShowFileList()
    Dim sht As Worksheet
    Dim intRow As Integer
    Dim strDir As String
    Dim strFile As String
    '//필요한 변수를 먼저 선언합니다.

    Set sht = ActiveSheet
    strDir = Trim(InputBox("검색할 폴더명을 입력하세요: ", "http://www.iexceller.com"))
    intRow = 1
    '//sht라는 변수에 ActiveSheet, 즉 현재 시트를 저장해 둡니다. 그리고 InputBox 함수를 사용해서
    '//어떤 폴더를 출력할 지 사용자가 직접 입력을 하도록 합니다. 여기서 Trim() 함수를 사용해 준 것
    '//은 무엇 때문일까요? 그렇습니다! 혹시 입력하는 사람이 좌우에 공백을 입력할 경우 에러를 방지
    '//하기 위한 것입니다.

    Worksheets.Add after:=Sheets("Preface")
    If Right(strDir, 1) <> "\" Then strDir = strDir & "\"
    '//Preface 시트 뒤에 새로운 워크시트를 한 장 삽입하고, InputBox를 통해 입력받은 strDir의 값의
    '//마지막이 \로 끝나지 않았으면 \를 첨가합니다. Dir() 함수를 사용할 때 마지막 부분에 \이 없
    '//으면 에러가 발생하므로 미리 이 경우에 대비를 하기 위한 것이지요.

    strFile = Dir(strDir)
    If strFile = "" Then
        MsgBox "해당 폴더에 파일이 없습니다", , "http://www.iexceller.com"
        Exit Sub
    End If
    '//strDir 폴더 내에 있는 첫번째 파일명을 strFile 변수에 저장합니다.

    Cells(intRow, 1) = "파일명"
    Cells(intRow, 2) = "크기"
    Cells(intRow, 3) = "작성일자"
    Range("a1:c1").Font.Name = "HY견고딕"

    intRow = intRow + 1
    Cells(intRow, 1) = strFile
    Cells(intRow, 2) = FileLen(strDir & strFile)
    Cells(intRow, 3) = FileDateTime(strDir & strFile)

    Do While strFile <> ""
        strFile = Dir()
        '//이제 Do~Loop 순환문을 돌면서 파일들에 대한 정보들을 워크시트 내에 차례로 뿌려줍니다.
        '//여기서 strFile=Dir() 이라고 해 주면 자동으로 다음에 위치한 항목, 즉 다음 파일을 차례로 읽어
        '//들이게 됩니다.

        If strFile <> "" Then
            intRow = intRow + 1
            Cells(intRow, 1) = strFile
            Cells(intRow, 2) = FileLen(strDir & strFile)
            Cells(intRow, 3) = FileDateTime(strDir & strFile)
        End If
    Loop

    Range("a2").Select
    Selection.Sort Key1:=Range("a2"), Header:=xlGuess, order1:=xlAscending
    Columns("a:c").EntireColumn.AutoFit
    '//시트 상의 내용들에 대해 Sorting을 한 다음, 열 폭을 맞추어 줍니다.

    MsgBox "총 " & intRow - 1 & " 개의 파일이 발견되었습니다", , "http://www.iexceller.com"
End Sub

Dir 함수는 지금도 동작하며, 파일 목록이 필요할 때 자주 쓰입니다. 폴더 안의 파일 목록을 시트로 불러오는 작업은 최신 엑셀의 [데이터] > [데이터 가져오기] > [파일에서] > [폴더에서](Power Query)로도 코드 없이 처리할 수 있습니다. 또한 Dir은 하위 폴더까지 검색하지 못한다는 점에 유의하세요.

정리

이상의 방법이 Dir() 함수를 사용하는 일반적인 방법입니다. 즉 처음 Dir 함수를 사용할 때에는 Dir("c:\windows\")와 같은 형태로 해서 폴더를 지정해 주고 그 다음번에는 그냥 Dir() 이라고만 하게 되면 자동으로 다음 해당 파일을 읽어들이는 것이지요.

마무리

다음 시간에는 이 Dir() 함수를 이용한 아주 실용적인 예제 한 가지에 대해 설명을 드리도록 하겠습니다. 도움말에 있는 Dir() 함수의 활용예제에 대해 미리 한번씩 읽어두시기 바랍니다.

오늘은 여기까지…

정리 — Dir 함수 파일 검색 핵심

구분 사용한 코드 역할
폴더 입력 Trim(InputBox(...)) 앞뒤 공백 제거
경로 정리 If Right(strDir, 1) <> "\" 마지막에 \ 붙이기
첫 파일 strFile = Dir(strDir) 첫 번째 파일명
다음 파일 strFile = Dir() 자동으로 다음 파일
파일 정보 FileLen / FileDateTime 크기와 작성일자

자주 묻는 질문 (FAQ)

Q1. Dir 함수는 어떤 기능을 하나요?

지정한 패턴이나 속성에 맞는 파일, 폴더 이름을 문자열로 돌려주는 함수입니다.

Q2. Dir()에 인수를 주지 않으면 어떻게 되나요?

직전에 지정한 조건에 해당하는 다음 항목을 자동으로 돌려줍니다.

Q3. 폴더명 뒤에 \를 붙이는 이유는 무엇인가요?

Dir 함수에 폴더를 지정할 때 마지막에 \가 없으면 오류가 발생할 수 있기 때문입니다.

마치며

Dir 함수의 첫 호출과 이후 호출의 차이만 이해하면 파일 검색은 어렵지 않습니다.