본문 바로가기
Excel VBA

GetOpenFilename 메서드를 이용해서 엑셀 파일 열기

2024. 8. 22.
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