EXCEL VBA

엑셀 VBA 폴더 내 파일이름 확인하기, DIR 함수, DIR()

카루루1007 2023. 10. 15. 19:47
728x90
반응형
SMALL

[ DIR 함수 소개 ]

 

DIR 함수는 엑셀 VBA에서

파일 시스템을 탐색하는 데 사용되는 내장함수입니다.

이 함수는 주어진 경로와 일치하는,

선택된 폴더의

첫번째 파일의 이름을 반환하며,

이후에는 DIR 함수를 다시 호출하면

해당 폴더의 다음 파일이름을 반환합니다.

 

즉, DIR 함수는 처음 호출될 때

지정된 폴더의 모든 파일을 찾아내고

이후에 다시

DIR 함수가 호출 될때마다

해당 폴더의 다음 파일을 반환합니다.

 

[ 예시코드 ]

 

Sub 파일목록확인()
    Dim MyFile As String
    Dim MyPath As String
    Dim fd As FileDialog

    Set fd = Application.FileDialog(msoFileDialogFolderPicker)

    If fd.Show = -1 Then
        MyPath = fd.SelectedItems(1)
    End If

    MyFile = Dir(MyPath & "\\")

    Do While MyFile <> ""
        Debug.Print MyFile
        MyFile = Dir
    Loop
End Sub

※ Application.FileDialog() 에 관한 설명은 여기를 참고하시기 바랍니다.

 

이 코드를 실행하면 VBA의 직접실행 창에

해당 폴더의 파일이름이 나열됩니다.

아래 그림과 같이 말이죠

 

728x90
반응형

 

위 결과를 보면

몇가지 다른 확장자를 가진 파일이 섞여 있습니다.

만약 이런 경우에

[ TXT ]확장자를 가진 파일만 가지고 오고 싶다면

아래와 같이 소스코드를 수정하면 됩니다.

Sub 파일목록확인()
    Dim MyFile As String
    Dim MyPath As String
    Dim fd As FileDialog

    Set fd = Application.FileDialog(msoFileDialogFolderPicker)

    If fd.Show = -1 Then
        MyPath = fd.SelectedItems(1)
    End If

    MyFile = Dir(MyPath & "\\")

    Do While MyFile <> ""
        If Right(MyFile, 4) = ".txt" Then
            Debug.Print MyFile
        End If
     MyFile = Dir
    Loop
End Sub

 

[ DIR 함수의 인자 ]

 

DIR 함수는 두개의 인자를 가집니다.

첫번째 인자는 위 코드에서 보셨다시피

폴더의 경로입니다.

 

두번째 인자로 가질 수 있는 것은 다음과 같습니다.

 

vbNormal : 값은 0이며 기본값입니다. 속성이 없는 파일을 지정합니다.

vbReadOnly : 값은 1입니다. 읽기 전용 파일속성이 없는 파일을 지정합니다.

vbHidden : 값은 2입니다. 숨겨진 파일속성이 없는 파일을 지정합니다.

vbSystem : 값은 4입니다. 시스템 파일속성이 없는 파일을 지정합니다.

vbVolume : 값은 8입니다. 볼륨 레이블을 지정합니다. 다른 속성이 지정되면 vbVolume은 무시됩니다.

vbDirectory : 값은 16입니다. 디렉토리나 폴더와 속성이 없는 파일을 지정합니다.

 

728x90
반응형
LIST