[ 들어가기 ]
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
[ 메서드 ]
지금까지의 코드에서 몇가지 메서드가 보였습니다.
첫째. 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
이 코드를 실행하면
대화상자가 나타나고
아래 그림처럼 확장자를 제한하게 할 수 있습니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
엑셀 VBA InputBox로 셀 범위 선택하고 값 채우기 (0) | 2023.10.31 |
---|---|
엑셀 VBA 폴더 내 파일이름 확인하기, DIR 함수, DIR() (0) | 2023.10.15 |
엑셀 VBA 시트 이름 한번에 바꾸기, 시트 이름 바꾸기 매크로 (1) | 2023.10.08 |
엑셀 VBA 시트별로 다른 파일로 저장하기, 엑셀 VBA 시트 각각 저장하기 (0) | 2023.10.07 |
엑셀 각 시트의 자료 취합하기, 엑셀 각 시트의 자료 하나의 시트로 모으기 (1) | 2023.10.03 |