엑셀 VBA에서 Application.Dialogs 개체는 엑셀에서 제공하는 기본 대화상자(Dialog)를 실행하는 기능을 제공합니다.
즉, 엑셀의 "파일 열기", "저장", "페이지 설정", "찾기/바꾸기" 등 내장된 대화상자를 VBA 코드로 실행할 때 사용됩니다.
1. 기본 문법
Application.Dialogs(대화상자 상수).Show
|
매개변수
|
설명
|
Dialogs(상수)
|
실행할 대화상자 유형 (xlDialogFileOpen, xlDialogSaveAs, xlDialogPrint 등)
|
Show
|
대화상자를 표시하고 실행 (True 반환 시 성공, False 반환 시 취소)
|
📌 Dialogs(xlDialogXXX).Show를 실행하면 엑셀의 기본 대화상자가 표시됨
📌 일부 대화상자는 매개변수를 사용할 수 있으며, 일부는 바로 실행됨
2. 파일 열기 대화상자 (File Open)
Sub 파일열기_대화상자()
Application.Dialogs(xlDialogOpen).Show
End Sub
|
📌 엑셀의 "파일 열기" 대화상자를 실행
📌 사용자가 파일을 선택하면 자동으로 엑셀에서 열림
3. 파일 저장 대화상자 (Save As)
Sub 파일저장_대화상자()
Application.Dialogs(xlDialogSaveAs).Show
End Sub
|
📌 엑셀의 "다른 이름으로 저장" 대화상자를 실행
📌 사용자가 파일 이름을 입력하고 저장하면 자동으로 파일이 저장됨
4. 페이지 설정 대화상자 (Page Setup)
Sub 페이지설정_대화상자()
Application.Dialogs(xlDialogPageSetup).Show
End Sub
|
📌 엑셀의 "페이지 설정" 대화상자를 실행하여 여백, 용지 방향 등을 설정
5. 인쇄 대화상자 (Print)
Sub 인쇄_대화상자()
Application.Dialogs(xlDialogPrint).Show
End Sub
|
📌 엑셀의 "인쇄" 대화상자를 실행
📌 사용자가 선택한 옵션대로 인쇄됨
6. 찾기 및 바꾸기 대화상자 (Find & Replace)
Sub 찾기_대화상자()
Application.Dialogs(xlDialogFormulaFind).Show
End Sub
Sub 바꾸기_대화상자()
Application.Dialogs(xlDialogFormulaReplace).Show
End Sub
|
Application.Dialogs(xlDialogFormulaReplace).Show End Sub
📌 "찾기" (Ctrl + F) 또는 "바꾸기" (Ctrl + H) 대화상자를 실행
7. 정렬 대화상자 (Sort)
Sub 정렬_대화상자()
Application.Dialogs(xlDialogSort).Show
End Sub
|
📌 엑셀의 "정렬" 대화상자를 실행
📌 사용자가 열 기준 또는 값 기준 정렬을 설정 가능
8. 워크시트 보호 대화상자 (Protect Sheet)
Sub 워크시트보호_대화상자()
Application.Dialogs(xlDialogProtectDocument).Show
End Sub
|
📌 엑셀의 "시트 보호" 대화상자를 실행
📌 암호를 설정하여 특정 셀만 수정 가능하도록 보호할 수 있음
9. 워크북 보호 대화상자 (Protect Workbook)
Sub 워크북보호_대화상자()
Application.Dialogs(xlDialogWorkbookProtect).Show
End Sub
|
📌 워크북 전체를 보호하는 대화상자 실행
10. 사용자 지정 대화상자 (Custom Views)
Sub 사용자지정뷰_대화상자()
Application.Dialogs(xlDialogCustomViews).Show
End Sub
|
📌 엑셀의 "사용자 지정 보기" 대화상자를 실행
📌 현재 설정을 저장하고 필요할 때 불러올 수 있음
11. 이름 관리자 대화상자 (Define Name)
Sub 이름관리자_대화상자()
Application.Dialogs(xlDialogDefineName).Show
End Sub
|
📌 엑셀의 "이름 관리자" 대화상자를 실행
📌 범위 이름을 설정하거나 관리할 수 있음
12. 데이터 유효성 검사 대화상자 (Data Validation)
Sub 데이터유효성검사_대화상자()
Application.Dialogs(xlDialogDataValidation).Show
End Sub
|
📌 엑셀의 "데이터 유효성 검사" 대화상자를 실행
📌 셀 입력값을 제한하는 조건을 설정 가능
13. 외부 데이터 가져오기 (Import External Data)
Sub 외부데이터가져오기_대화상자()
Application.Dialogs(xlDialogImport).Show
End Sub
|
📌 엑셀의 "외부 데이터 가져오기" 대화상자를 실행
📌 Access, SQL, 웹 데이터 등을 가져올 수 있음
14. 목록 자동 필터 대화상자 (AutoFilter)
Sub 자동필터_대화상자()
Application.Dialogs(xlDialogFilterAdvanced).Show
End Sub
|
📌 엑셀의 "고급 필터" 대화상자를 실행
📌 필터를 설정하여 특정 데이터만 표시 가능
15. 엑셀 옵션 (Options)
Sub 엑셀옵션_대화상자()
Application.Dialogs(xlDialogOptionsGeneral).Show
End Sub
|
📌 엑셀의 "옵션" 창을 실행하여 환경 설정을 변경 가능
📌 주요 대화상자 목록 (xlDialog 상수)
기능
|
VBA 코드 (Application.Dialogs(xlDialogXXX).Show)
|
파일 열기
|
xlDialogOpen
|
파일 저장
|
xlDialogSaveAs
|
페이지 설정
|
xlDialogPageSetup
|
인쇄
|
xlDialogPrint
|
찾기 (Ctrl + F)
|
xlDialogFormulaFind
|
바꾸기 (Ctrl + H)
|
xlDialogFormulaReplace
|
정렬
|
xlDialogSort
|
워크시트 보호
|
xlDialogProtectDocument
|
워크북 보호
|
xlDialogWorkbookProtect
|
사용자 지정 보기
|
xlDialogCustomViews
|
이름 관리자
|
xlDialogDefineName
|
데이터 유효성 검사
|
xlDialogDataValidation
|
외부 데이터 가져오기
|
xlDialogImport
|
목록 자동 필터
|
xlDialogFilterAdvanced
|
엑셀 옵션
|
xlDialogOptionsGeneral
|
🛠 Dialog와 GetOpenFilename/GetSaveAsFilename 비교
기능
|
Application.Dialogs
|
Application.GetOpenFilename / Application.GetSaveAsFilename
|
파일 열기/저장 대화상자 표시
|
✅
|
✅
|
파일 직접 열거나 저장
|
✅
|
❌ (파일 경로만 반환)
|
사용자에게 대화상자 표시
|
✅
|
✅
|
입력받은 파일 경로 활용 가능
|
❌ (즉시 실행)
|
✅ (경로 반환 후 활용 가능)
|
📌 파일 경로를 활용하려면 GetOpenFilename 또는 GetSaveAsFilename이 더 유용
📌 즉시 실행하고 설정을 적용하려면 Dialogs(xlDialogXXX).Show 사용