본문 바로가기
Workbook object

엑셀 파일 열기

2023. 6. 23.

1. 파일 열기

Sub OpenWorkbookExample()

    Dim wb As Workbook
    
    ' 파일 경로 및 파일 이름 지정
    Dim filePath As String
    filePath = "D:\VBA Folder\Sample.xlsx"
    
    ' 엑셀 파일 열기
    Set wb = Workbooks.Open(Filename:=filePath)
        
End Sub

2. 읽기 전용 모드로 열기

Sub OpenReadOnlyWorkbookExample()

    Dim wb As Workbook
    
    ' 파일 경로 및 파일 이름 지정
    Dim filePath As String
    filePath = "D:\VBA Folder\Sample.xlsx"
    
    ' 엑셀 파일을 읽기 전용 모드로 열기
    Set wb = Workbooks.Open(Filename:=filePath, ReadOnly:=True)
        
End Sub

3.파일 선택 대화 상자 띄우기

Sub OpenFileExample()

    Dim filePath As Variant
    
    ' 파일 선택 대화 상자 표시
    filePath = Application.GetOpenFilename()
    
    ' 사용자가 파일을 선택한 경우
    If filePath <> False Then
        ' 선택한 파일의 경로 출력
        MsgBox "Selected File: " & filePath
    Else
        ' 파일 선택을 취소한 경우
        MsgBox "No file selected."
    End If
    
End Sub

파일을 선택한 경우

파일을 선택하지 않은 경우

4. 특정 형식의 파일만 열기

Sub OpenFileWithFilterExample()

    Dim filePath As Variant

    ' 파일 필터 지정
    Dim filter As String
    filter = "Excel 파일 (*.xlsx), *.xlsx,텍스트 파일 (*.txt), *.txt ,모든 파일 (*.*), *.*"

    ' 파일 선택 대화 상자 표시
    filePath = Application.GetOpenFilename(filter)

    ' 사용자가 파일을 선택한 경우
    If filePath <> False Then
        ' 선택한 파일의 경로 출력
        MsgBox "Selected File: " & filePath
    Else
        ' 파일 선택을 취소한 경우
        MsgBox "No file selected."
    End If

End Sub

5.특정 형식의 파일만 열기(여러 개의 확장자)

Sub OpenFileWithFilterExample()
    
    Dim filePath As Variant
    Dim filter As String
    
    ' 파일 필터 지정
    filter = "Worksheets (*.xlsx;*.xlsm;*.xlsb;*.xls), *.xlsx;*.xlsm;*.xlsb;*.xls," & _
             "Text Files (*.prn;*.txt;*.csv), *.prn;*.txt;*.csv," & _
             "모든 파일 (*.*), *.*"
    
    ' 파일 선택 대화 상자 표시
    filePath = Application.GetOpenFilename(filter)
    
    ' 사용자가 파일을 선택한 경우
    If filePath <> False Then
        ' 선택한 파일의 경로 출력
        MsgBox "Selected File: " & filePath
    Else
        ' 파일 선택을 취소한 경우
        MsgBox "No file selected."
    End If
    
End Sub

6.파일 필터의 초기 인덱스 지정

Sub OpenFileWithFilterExample()
    
    Dim filePath As Variant
    Dim filter As String
    Dim filterIndex As Integer
    
    ' 파일 필터 지정
    filter = "Worksheets (*.xlsx;*.xlsm;*.xlsb;*.xls), *.xlsx;*.xlsm;*.xlsb;*.xls," & _
             "Text Files (*.prn;*.txt;*.csv), *.prn;*.txt;*.csv," & _
             "모든 파일 (*.*), *.*"
    
    ' 파일 필터의 초기 인덱스 지정
    filterIndex = 2 ' 두 번째 파일 필터인 "텍스트 파일"을 선택
    
    ' 파일 선택 대화 상자 표시
    filePath = Application.GetOpenFilename(filter, filterIndex)
    
    ' 사용자가 파일을 선택한 경우
    If filePath <> False Then
        ' 선택한 파일의 경로 출력
        MsgBox "Selected File: " & filePath
    Else
        ' 파일 선택을 취소한 경우
        MsgBox "No file selected."
    End If
    
End Sub

7. 파일 대화 상자의 제목 설정

Sub OpenFileWithTitleExample()

    Dim filePath As Variant
    Dim filter As String
    Dim title As String

    ' 파일 필터 지정
    filter = "Worksheets (*.xlsx;*.xlsm;*.xlsb;*.xls), *.xlsx;*.xlsm;*.xlsb;*.xls," & _
             "Text Files (*.prn;*.txt;*.csv), *.prn;*.txt;*.csv," & _
             "모든 파일 (*.*), *.*"

    ' 파일 대화 상자 제목 설정
    title = "원하는 파일을 선택하세요"

    ' 파일 선택 대화 상자 표시
    filePath = Application.GetOpenFilename(filter, , title)

    ' 사용자가 파일을 선택한 경우
    If filePath <> False Then
        ' 선택한 파일의 경로 출력
        MsgBox "Selected File: " & filePath
    Else
        ' 파일 선택을 취소한 경우
        MsgBox "No file selected."
    End If

End Sub

8. 여러 개의 파일 선택

Sub OpenFileWithMultiSelectExample()
    Dim filePaths As Variant
    Dim filter As String
    Dim Msg As String
    Dim i As Long
    ' 파일 필터 지정
    filter = "Worksheets (*.xlsx;*.xlsm;*.xlsb;*.xls), *.xlsx;*.xlsm;*.xlsb;*.xls," & _
             "Text Files (*.prn;*.txt;*.csv), *.prn;*.txt;*.csv," & _
             "모든 파일 (*.*), *.*"
    
    ' 파일 선택 대화 상자 표시 (다중 선택 활성화)
    filePaths = Application.GetOpenFilename(filter, multiSelect:=True)
    
    ' 사용자가 파일을 선택한 경우
    If IsArray(filePaths) Then
        ' 선택한 파일의 경로들을 출력
        Msg = "Selected File: " & vbNewLine
        For i = LBound(filePaths) To UBound(filePaths)
            Msg = Msg & filePaths(i) & vbNewLine
        Next i
        MsgBox Msg
    Else
        ' 파일 선택을 취소한 경우
        MsgBox "No file selected."
    End If
End Sub

 

9. 파일 선택하고 열기

Sub OpenAndDisplaySuccessExample()
    
    Dim filePath As Variant
    Dim wb As Workbook
    
    ' 파일 필터 지정
    Dim filter As String
    filter = "Excel 파일 (*.xlsx), *.xlsx," & _
             "텍스트 파일 (*.txt), *.txt," & _
             "모든 파일 (*.*), *.*"
    
    ' 파일 선택 대화 상자 표시
    filePath = Application.GetOpenFilename(filter)
    
    ' 사용자가 파일을 선택한 경우
    If filePath <> False Then
        ' 파일 열기
        Set wb = Workbooks.Open(filePath)
        
        ' 성공적으로 열렸다는 메시지 표시
        MsgBox "파일이 성공적으로 열렸습니다."
        
        ' 열린 워크북 닫기
        wb.Close SaveChanges:=False
    Else
        ' 파일 선택을 취소한 경우
        MsgBox "파일이 선택되지 않았습니다."
    End If
    
End Sub

10.파일이 존재하는지 확인

Function FileExists(filePath As String) As Boolean
    FileExists = (Dir(filePath) <> "")
End Function

11 파일이 열려있는지 확인

Public Function IsFileOpen(ByVal filename As String) As Boolean

    Dim wb As Workbook

    On Error Resume Next

    Set wb = Workbooks(filename)
    
    On Error GoTo 0

    IsFileOpen = (Not wb Is Nothing)

End Function

12. 파일 열기

Sub CheckFileOpen()

    ' 확인할 파일 이름을 가져옵니다.
    Dim filename As String
    filename = "MyFile.xlsx"

    ' 파일이 존재하는지 확인합니다.
    If Not FileExists(filename) Then
        MsgBox "The file does not exist."
        Exit Sub
    Else
    End If

    ' 파일이 열려 있는지 확인합니다.
    If IsFileOpen(filename) Then
        MsgBox "The file is already open."
        Exit Sub
    Else
        MsgBox "The file is not open."
    End If

End Sub

'Workbook object' 카테고리의 다른 글

엑셀 문서 속성 수정하기  (0) 2023.08.25
통합문서 닫기  (0) 2023.06.24
통합문서 저장하기  (0) 2023.06.24
엑셀 통합문서 만들기  (0) 2023.06.22