EXCEL VBA

엑셀 VBA 폴더 및 파일 선택 창 열기, Application.FileDialog()

카루루1007 2023. 10. 14. 22:49
728x90
반응형
SMALL

[ 들어가기 ]

VBA에서 [ Application.FileDialog ]는 

사용자에게 파일 또는 폴더를 

선택하도록 요청하는

대화상자를 표시하는 데 사용되는 객체입니다.

 

[ 사용할 수 있는 옵션 ]

파일 또는 폴더를 열기위해 

사용할 수 있는 옵션은 

4가지가 있습니다.

 

첫째. msoFileDialogOpen

 

이 옵션은 하나의 파일을 열도록 사용자에게 요청하는 대화상자를 표시합니다.

Sub 폴더열기()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogOpen)
    
    fd.Show
    If fd.SelectedItems.Count > 0 Then
      MsgBox "선택한 파일: " & fd.SelectedItems(1)
    End If
End Sub

 

이 코드를 실행해 보면 파일 선택창이 나타나고

하나의 파일만 선택한 후

선택한 파일의 경로와 파일 이름, 그리고 확장자를

메세지 박스에 보여줍니다.

 

다른 옵션을 설명할 때에도 위 코드를 계속 사용할 것이며

옵션 부분만 바꾸어 설명하겠습니다.

 

 두번째. msoFileDialogFilePicker

 

이 옵션 역시 파일을 선택할 수 있도록 사용자에게 요청하는 대화상자를 표시합니다.

다만 [ msoFileDialogOpen ]과 차이점은

[ msoFileDialogFilePicker ]의 옵션을 사용하면

여러개의 파일을 한번에 선택할 수 있습니다.

Sub 폴더열기()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    
    fd.Show
    If fd.SelectedItems.Count > 0 Then
      MsgBox "선택한 파일: " & fd.SelectedItems(1)
    End If
End Sub

 

이 코드를 실행해 보시면

한번에 여러개의 파일을 선택할 수 있다는 것을

아실 수 있습니다.

물론 지금 코드의 특성상

파일의 이름은 하나밖에 나타나지 않습니다.

 

세번째. msoFileDialogFolderPicker

 

이 옵션은 폴더를 선택할 수 있게 해줍니다.

Sub 폴더열기()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    
    fd.Show
    If fd.SelectedItems.Count > 0 Then
      MsgBox "선택한 파일: " & fd.SelectedItems(1)
    End If
End Sub

 

네번째. msoFileDialogSaveAs

 

이 옵션은 현재의 파일을

다른 이름으로 저장하도록 사용자에게 요청하는

대화상자를 표시합니다.

Sub 폴더열기()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    
    fd.Show
    If fd.SelectedItems.Count > 0 Then
      MsgBox "선택한 파일: " & fd.SelectedItems(1)
    End If
End Sub

 

728x90

 

[ 메서드 ]

 

지금까지의 코드에서 몇가지 메서드가 보였습니다.

 

첫째. Show

 

대화상자를 표시합니다.

"확인"을 누르면 [ -1 ]을 반환하고

"취소"를 누르면 [ 0 ]을 반환합니다.

 

위에서 사용한 코드에서는

fd.Show

이렇게 사용했습니다.

 

두번째. SelectedItems

 

사용자가 선택한 파일 또는 폴더를 반환합니다.

지금까지 사용된 코드를 예를들면

fd.SelectedItems(1)

위 코드는  선택된 것들 중 첫번째 것을 반환하라는 의미였습니다.

 

[ msoFileDialogFilePicker ]와 함께 사용해서

선택된 모든 파일을 메세지 박스에 띄울 수 있습니다.

Sub 파일선택()
    Dim fd As FileDialog
    Dim i As Integer
            
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    fd.Show
    
    If fd.SelectedItems.Count > 0 Then
        For i = 1 To fd.SelectedItems.Count
            MsgBox "선택한 파일 " & i & ": " & fd.SelectedItems(i)
        Next i
    End If
End Sub

 

반응형

 

셋째. Filters

 

파일 형식 즉 확장자를 설정하여

대화상자에 표시되는 파일 형식을 제한할 수 있습니다.

다음 코드를 실행하면

해당되는 파일만 선택하게 하도록 제한할 수 있습니다.

Sub 파일선택()
    Dim fd As FileDialog
    Dim i As Integer
            
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    fd.Filters.Add "Excel files", "*.xlsx"
    fd.Filters.Add "image", "*.gif; *.jpg; *.jpeg"
    fd.Show
    
    If fd.SelectedItems.Count > 0 Then
        For i = 1 To fd.SelectedItems.Count
            MsgBox "선택한 파일 " & i & ": " & fd.SelectedItems(i)
        Next i
    End If
End Sub

 

이 코드를 실행하면

대화상자가 나타나고

아래 그림처럼 확장자를 제한하게 할 수 있습니다.

 

728x90
반응형
LIST