파일 다이얼로그는 사용자에게 파일을 선택하거나 저장할 수 있는 기능을 제공합니다. 이것을 이용해서 사용자에게 직접 파일 경로나 이름을 입력할 필요 없이 편리하게 파일을 찾거나 저장할 수 있도록 해 줍니다. 또한 파일 다이얼로그를 통해 사용자가 잘못된 파일을 선택하는 실수를 줄일 수 있고, 파일 경로 및 이름을 정확하게 얻을 수 있습니다. 이는 데이터 입력 및 출력, 파일 처리, 보고서 생성 등 다양한 작업에 유용하며 사용자 경험을 향상시킵니다.
◎ 단일 파일 선택 다이얼로그 구현하기 |
▼ 먼저 파일 다이얼로그 객체를 생성할 수 있는 함수를 알아보겠습니다. 파일 다이얼로그 객체를 생성합니다. 파라미터로 파일 다이얼로그의 형태를 결정하는 타입의 종류를 입력합니다.
Set fd = Application.FileDialog(msoFileDialogFilePicker) |
▼ 타입은 다음과 같이 4가지가 있습니다.
msoFileDialogFilePicker 파라미터 종류 l msoFileDialogFilePicker : 사용자가 파일을 선택할 수 있는 타입 l msoFileDialogFolderPicker : 사용자가 폴더를 선택할 수 있는 타입 l msoFileDialogOpen : 사용자가 파일을 열수 있는 타입 l msoFileDialogSaveAs : 사용자가 파일을 저장할 수 있는 타입 |
▼ 각 파일 다이얼로그 타입값이 화면에 어떻게 나타나는지 살펴보겠습니다. msoFileDialogFilePicker 는 화면에 모든 파일과 폴더가 나타납니다. 다중 파일 선택이 가능합니다.
▼ msoFileDialogFolderPicker 옵션은 파일은 화면에 나타나지 않고 폴더만 보입니다.
기본적으로 msoFileDialogOpen는 하나의 파일을 선택하는 데 사용되며, msoFileDialogFilePicker는 여러 파일을 한 번에 선택하는 데 사용됩니다. 따라서 어떤 유형의 파일 대화 상자를 열고 어떤 종류의 파일 선택 작업을 수행하는지에 따라 적절한 파라미터 값을 선택합니다.
▼ msoFileDialogSaveAs 은 사용자가 파일을 저장하고 싶을 때 사용하는 옵션입니다.
▼ Show 함수를 이용해서 다이얼로그를 띄웁니다. 리턴 값으로 선택한 파일이 있는지 여부는 .SelectedItems.Count 속성으로 판단합니다. 리턴값이 0 이면 파일을 선택하지 않은 것이므로 함수를 Exit sub 빠져나갑니다.
With fd .Show If .SelectedItems.Count = 0 Then ''선택한 파일이 없는 경우 Exit Sub Else Debug.Print "File Path : " & .SelectedItems(1) End If End With |
▼ 파일 다이얼로그를 구현한 전체 함수입니다. 함수를 실행한 결과는 아래 이미지로 확인할 수 있습니다. 파일 다이얼로그에서 선택한 파일 경로를 로그로 출력했습니다.
Sub filedialog_sample() Dim fd As FileDialog ' Declare Dim vSelectItem As Object Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .Show If .SelectedItems.Count = 0 Then ''선택한 파일이 없는 경우 Exit Sub Else Debug.Print "File Path : " & .SelectedItems(1) End If End With End Sub |
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 반복문 For Next 문 사용하기 ▶ 엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 ▶ 엑셀 VBA 셀 참조하는 여러가지 방법 ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 함수 만들어서 매크로와 연결하기 |
◎ 멀티 파일 선택 다이얼로그 구현하기 |
▼ 다음은 멀티 선택 옵션을 이용해서 다이얼로그를 띄웠을 때 선택한 경로를 출력하는 방법입니다. 옵션은 멀티 선택이 가능한 msoFileDialogFilePicker 을 사용하였습니다. 그리고 멀티 선택이 가능하도록 속성값을 지정해야 합니다.
AllowMultiSelect = True |
▼ 선택한 파일 개수 만큼 For 문을 반복합니다.
For lngCount = 1 To .SelectedItems.Count Debug.Print .SelectedItems(lngCount) Next lngCount |
▼ 화면은 파일 다이얼로그에서 멀티 선택한 모습입니다.
▼ 멀티로 파일을 선택한 경우 파일명을 출력하는 방법은 다음과 같습니다. For 문을 돌면서 선택한 파일을 출력하였습니다.
Sub filedialog_sample() Dim fd As FileDialog ' Declare Dim vSelectItem As Object Dim lngCount As Long Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .AllowMultiSelect = True .Show If .SelectedItems.Count = 0 Then ''선택한 파일이 없는 경우 Exit Sub Else For lngCount = 1 To .SelectedItems.Count Debug.Print .SelectedItems(lngCount) Next lngCount End If End With End Sub |
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 반복문 For Next 문 사용하기 ▶ 엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 ▶ 엑셀 VBA 셀 참조하는 여러가지 방법 ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 함수 만들어서 매크로와 연결하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀(VBA) InputBox 함수 이용해서 입력값 받기 (0) | 2023.11.12 |
---|---|
엑셀 Excel VBA 개발 도구를 이용해서 버튼 삽입하고 함수 연결하기 (2) | 2023.11.11 |
엑셀 VBA Select Case 문 사용해서 다중조건 처리하기 (0) | 2023.11.09 |
엑셀 VBA IF 지시 구문 사용하는 방법, IF … ELSEIF … ELSE … ENDIF (4) | 2023.09.20 |
엑셀 VBA 셀 영역 선택하는 여러가지 방법 (1) | 2023.09.06 |
엑셀 VBA Range 객체 중 Areas 속성 사용하기 (0) | 2023.08.25 |
엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법 (1) | 2023.08.09 |
엑셀 VBA 이미지 셀 크기에 자동으로 삽입하는 매크로 만들기 (6) | 2023.08.08 |