Sub OpenExcelWorkbook()
' 문자열 변수를 정의
Dim FName As Variant
' GetOpenFilename 메서드를 사용하여 대화 상자 표시
FName = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.xls; *.xlsx; *.xlsm), *.xls; *.xlsx; *.xlsm", _
Title:="통합 문서를 선택하세요", _
MultiSelect:=False)
' 파일 열기
If FName <> False Then
On Error Resume Next
Workbooks.Open Filename:=FName
' 파일 열기 중 오류 확인
If Err.Number <> 0 Then
MsgBox "파일을 열 수 없습니다.", vbExclamation
Err.Clear
Else
MsgBox "파일이 성공적으로 열렸습니다.", vbInformation
End If
On Error GoTo 0
Else
MsgBox "파일이 선택되지 않았습니다.", vbInformation
End If
End Sub
코드를 실행하면 다음과 같은 대화상자가 뜹니다.MultiSelect가 False이므로 하나의 파일만 선택이 가능합니다.
여러 개의 파일을 선택하려면 코드를 조금 수정해야 합니다.
Sub OpenExcelWorkbooks()
' 문자열 변수를 정의
Dim FNames As Variant
Dim i As Integer
' GetOpenFilename 메서드를 사용하여 대화 상자 표시
FNames = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.xls; *.xlsx; *.xlsm), *.xls; *.xlsx; *.xlsm", _
Title:="통합 문서를 선택하세요", _
MultiSelect:=True)
' 파일 열기
If IsArray(FNames) Then
On Error Resume Next
For i = LBound(FNames) To UBound(FNames)
Workbooks.Open Filename:=FNames(i)
' 파일 열기 중 오류 확인
If Err.Number <> 0 Then
MsgBox FNames(i) & " 파일을 열 수 없습니다.", vbExclamation
Err.Clear
Else
MsgBox FNames(i) & " 파일이 성공적으로 열렸습니다.", vbInformation
End If
Next i
On Error GoTo 0
Else
MsgBox "파일이 선택되지 않았습니다.", vbInformation
End If
End Sub
배열 형태로 반환이 되므로 변수를 String에서 Variant로 변환하고 IsArray함수를 사용 하였습니다.
도움말 출처
Application.GetOpenFilename method (Excel)
Office VBA reference topic
learn.microsoft.com
'Excel VBA' 카테고리의 다른 글
파일 열 때 특정 시트로 이동하기 (0) | 2024.08.21 |
---|---|
지정한 범위의 셀 수정 시 통합 문서 저장하기 (0) | 2024.08.20 |
특정 범위를 새 통합 문서에 복사하고 저장하기 (0) | 2024.08.20 |
자동 필터 후 자동필터 목록에 있는 데이터 개수 구하기 (0) | 2024.07.11 |
데이터 요약하기 (0) | 2023.08.12 |