Excel VBA
GetOpenFilename 메서드를 이용해서 엑셀 파일 열기
VBA는 취미로
2024. 8. 22. 15:19
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