VBA 통합 문서 열기/닫기
이 튜토리얼에서는 VBA를 사용하여 Excel 통합 문서 및 기타 유형의 파일을 여러 가지 방법으로 열고 닫는 방법을 배웁니다.
VBA를 사용하면 표준 메서드인 .Open 와 .Close.를 사용하여 파일을 열거나 닫을 수 있습니다.
파일을 열기 전에 파일이 있는지 확인하는 방법을 알아보려면 이 링크를 클릭하세요: VBA File Exists
VBA에서 통합 문서 열기
파일경로로 통합 문서 열기
열려는 파일의 위치를 알고 있는 경우 코드에 전체 경로로 이름을 지정할 수 있습니다. 다음은 코드를 참조해주세요:
Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx"
이 코드로 “VBA Folder”에서 “샘플 Sample file 1” 파일을 엽니다.
통합 문서 열기 – ActiveWorkbook
통합 문서를 열면 자동으로 ActiveWorkbook이 됩니다. 다음과 같이 새로 열린 통합 문서를 참조할 수 있습니다:
ActiveWorkbook.Save
시트 또는 범위를 참조하고 통합 문서 이름을 생략하면 VBA는 ActiveWorkbook을 참조하는 것으로 간주합니다:
Sheets("Sheet1").Name = "Input"
통합 문서 열고 변수에 할당하기
통합 문서를 열어 객체 변수에 직접 할당할 수도 있습니다. 이 프로시저는 통합 문서를 wb 변수에 할당하여 연 다음 통합 문서를 저장합니다.
Sub OpenWorkbookToVariable()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\VBA Folder\Sample file 1.xlsx")
wb.Save
End Sub
통합 문서가 열릴 때 변수에 통합 문서를 할당하는 것이 통합 문서를 변수로 관리하고 추적하는 가장 좋은 방법입니다.
통합 문서 파일 열기 대화 상자
통합 문서 파일 열기 대화 상자를 트리거할 수도 있습니다. 이렇게 하면 사용자가 파일로 이동하여 파일을 열 수 있습니다:
Sub OpenWorkbook ()
Dim strFile As String
strFile = Application.GetOpenFilename()
Workbooks.Open (strFile)
End Sub
이미지 1에서 볼 수 있듯이, 이 접근 방식을 사용하면 사용자가 열 파일을 선택할 수 있습니다. 파일 열기 대화 상자는 크게 사용자 지정할 수 있습니다. 특정 폴더를 기본값으로 설정하거나, 표시되는 파일 유형(예: .xlsx만)을 선택하는 등의 작업을 수행할 수 있습니다. 자세한 예제는 파일 열기 대화 상자에 대한 튜토리얼을 참조하세요.
새 통합 문서 열기
이 코드로 새 통합 문서를 열수 있습니다:
Workbooks.Add
새 통합 문서를 열고 변수에 할당하기
이 프로시저는 새 통합 문서를 열어 변수 wb에 할당합니다:
Sub OpenNewWorkbook()
Dim wb As Workbook
Set wb = Workbooks.Add
End Sub
통합 문서 열기 구문
Workbooks.Open을 입력하면 통합 문서를 열 때 사용할 수 있는 옵션이 여러개 있다는 것을 알 수 있습니다:
파일 이름은 필수입니다. 다른 모든 인수는 선택 사항이며 대부분의 다른 인수를 알 필요는 없습니다. 다음은 가장 일반적인 두 가지 인수입니다:
통합 문서 읽기 전용으로 열기
통합 문서를 읽기 전용으로 열면 원본 파일에 저장할 수 없으며 사용자가 파일을 편집할 수 없습니다.
Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx", , True
암호로 보호된 통합 문서 열기
통합 문서가 암호로 보호되어 있을 수 있습니다. 이 코드를 사용하여 암호로 보호된 통합 문서를 엽니다:
Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx", , , "password"
통합 문서 열기 구문 참고사항
위 이미지에서 구문을 표시하기 위해 괄호 “(“가 포함된 것을 알 수 있습니다. Workbooks.Open으로 작업할 때 괄호를 사용하는 경우 통합 문서를 변수에 할당해야 합니다:
Sub OpenWB()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\VBA Folder\Sample file 1.xlsx", True, True)
End Sub
VBA에서 통합 문서 닫기
특정 통합 문서 닫기
통합 문서를 여는 것과 마찬가지로 파일을 닫는 방법에는 여러 가지가 있습니다. 닫으려는 파일을 알고 있는 경우 다음 코드를 사용할 수 있습니다:
Workbooks.Close ("C:\VBA Folder\Sample file 1.xlsx")
이 코드 줄은 “Sample file 1” 파일이 열려 있는 경우 파일을 닫습니다. 그렇지 않은 경우 오류를 반환하므로 오류 처리를 처리해야 합니다.
활성 통합 문서 닫기
현재 활성 상태인 통합 문서를 닫으려면 이 코드를 사용하여 닫을 수 있습니다:
ActiveWorkbook.Close
열려 있는 모든 통합 문서 닫기
열려 있는 모든 통합 문서를 닫으려면 아래 코드를 사용하면 됩니다:
Workbooks.Close
처음 연 통합 문서 닫기
이렇게 하면 첫번째로 열거나 만든 통합 문서가 닫힙니다:
Workbooks(1).Close
위 코드에서 1을 2로 바꾸면 두 번째로 열렸거나 만든 통합 문서가 닫힙니다.
저장하지 않고 닫기
저장 메시지를 표시하지 않고 통합 문서를 저장하지 않고 닫습니다:
ActiveWorkbook.Close savechanges:=False
저장 후 메시지 없이 닫기
마찬가지로 저장 메시지를 표시하지 않고 통합 문서를 저장하고 닫습니다:
ActiveWorkbook.Close savechanges:=True
참고: 통합 문서를 저장할지 여부와 메시지 표시 여부를 나타내는 다른 여러 가지 방법이 있습니다. 이에 대한 자세한 내용은 여기에 설명되어 있습니다.
기타 통합 문서 열기 예제
여러 개의 새 통합 문서 열기
이 프로시저는 여러 개의 새 통합 문서를 열어 새 통합 문서들을 배열에 할당합니다:
Sub OpenMultipleNewWorkbooks()
Dim arrWb(3) As Workbook
Dim i As Integer
For i = 1 To 3
Set arrWb(i) = Workbooks.Add
Next i
End Sub
폴더에 있는 모든 Excel 통합 문서 열기
이 프로시저는 파일 열기 대화 상자를 사용하여 폴더에 있는 모든 Excel 통합 문서를 엽니다.
Sub OpenMultipleWorkbooksInFolder()
Dim wb As Workbook
Dim dlgFD As FileDialog
Dim strFolder As String
Dim strFileName As String
Set dlgFD = Application.FileDialog(msoFileDialogFolderPicker)
If dlgFD.Show = -1 Then
strFolder = dlgFD.SelectedItems(1) & Application.PathSeparator
strFileName = Dir(strFolder & "*.xls*")
Do While strFileName <> ""
Set wb = Workbooks.Open(strFolder & strFileName)
strFileName = Dir
Loop
End If
End Sub
통합 문서가 열려 있는지 확인하기
이 절차는 통합 문서가 열려 있는지 테스트합니다:
Sub TestByWorkbookName()
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name = "New Microsoft Excel Worksheet.xls" Then
MsgBox "Found it"
Exit Sub '호출할 코드를 입력하면 됩니다, 지금은 그냥 종료하겠습니다
End If
Next
End Sub
Workbook_Open 이벤트
VBA 이벤트는 VBA에 특정 코드를 실행하도록 지시하는 ‘트리거’입니다. 통합 문서 열기, 닫기, 저장 전, 저장 후 등에 대한 통합 문서 이벤트를 설정할 수 있습니다.
통합 문서가 열릴 때 자동으로 매크로를 실행하는 방법에 대해 자세히 알아보려면 Workbook_Open 이벤트 튜토리얼을 읽어 보세요.
VBA에서 다른 유형의 파일 열기
VBA를 사용하여 txt 또는 Word 파일과 같은 다른 유형의 파일을 VBA로 열 수 있습니다.
텍스트 파일 열기 및 내용 읽기
VBA Open 메서드를 사용하여 파일을 열면 파일을 읽거나 쓸 수 있습니다. 파일의 내용을 읽으려면 INPUT으로 파일을 열면 됩니다.
Sub OpenTextFile()
Dim strFile As String
Dim strBody As String
Dim intFile As Integer
strFile = "C:\data\test.txt"
intFile = FreeFile
Open strFile For Input As intFile
strBody = Input(LOF(intFile), intFile)
'본문 내에서 필요한 내용을 추출하는 코드를 작성합니다.
'추가 필요한 코드를 작성합니다.
Debug.Print strBody
Close intFile
End Sub
위의 코드는 텍스트 파일 “test.txt”를 연 다음 파일의 전체 내용을 strBody 변수에 할당합니다. 파일 데이터를 strBody 변수로 추출한 후에는 필요한 용도로 사용할 수 있습니다. 위의 Debug.Print 명령을 사용하면 VBE의 직접 실행 창에서 strBody 변수의 내용을 볼 수 있습니다.
텍스트 파일 열기 및 내용 추가하기
VBA에서 텍스트 파일을 연 다음 Append 메서드를 사용하여 파일 하단에 내용을 추가할 수도 있습니다.
Sub AppendToTextFile()
Dim strFile As String
Dim strBody As String
Dim intFile As Integer
strFile = "C:\data\test.txt"
intFile = FreeFile
Open strFile For Append As intFile
'하단에 두줄 추가하기
Print #intFile, "하단에 추가할 첫번째 줄입니다"
Print #intFile, "핟나에 추가할 두번째 줄입니다"
'파일을 닫습니다
Close intFile
End Sub
위의 코드는 텍스트 파일을 연 다음 #intFile 변수를 사용하여 파일 하단에 2줄의 텍스트를 추가합니다(# 기호가 핵심입니다!). 그런 다음 파일을 닫습니다.
Word 파일 열기 및 쓰기
Excel에서 VBA를 사용하여 Word 파일을 열 수도 있습니다.
Sub OpenWordFile()
Dim wApp As Object
Dim wDoc As Object
Set wApp = CreateObject("Word.Application")
Set wd = wApp.documents.Open("c:data\test.docx")
wApp.Visible = True
End Sub
이 코드는 Word의 사본을 연 다음 test.docx 문서를 엽니다.