VBA 통합 문서 객체로 작업하기
In this Article
이 튜토리얼에서는 VBA에서 통합 문서 객체로 작업하는 방법을 소개합니다.
Workbook 객체
먼저 VBA에서 통합 문서와 상호 작용하려면 Workbook 객체를 이해해야 합니다.
Workbook 객체를 사용하면 다음과 같이 통합 문서 이름으로 통합 문서를 참조할 수 있습니다:
Workbooks("Book2.xlsm").Activate
하지만 이 코드는 통합 문서가 열려 있는 경우에만 작동합니다. 통합 문서가 닫혀 있는 경우 전체 통합 문서 경로를 제공해야 합니다:
Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm")
전체 경로를 입력하는 대신 원하는 통합 문서가 코드가 저장된 통합 문서와 같은 디렉터리에 있는 경우 아래 코드와 같이 좀 더 간단한 코드로 통합 문서를 열 수 있습니다:
Workbooks.Open (ThisWorkbook.Path & "\book2.xlsm")
여기에는 다음 섹션에서 설명할 ThisWorkbook 객체가 사용됩니다.
통합문서의 인덱스 번호
끝으로, 통합 문서의 “인덱스 번호”로 통합 문서를 참조할 수 있습니다. 통합 문서의 인덱스 번호는 통합 문서가 열린 순서(엄밀히 말하면 통합 문서 컬렉션에서 통합 문서의 위치)에 해당합니다.
Workbooks(1).Activate
통합문서의 인덱스 번호는 처음(또는 마지막으로) 연 통합 문서를 닫는 등의 작업을 수행하려는 경우에 유용합니다.
통합문서 활성화하기, ActiveWorkbook, ThisWorkbook
통합 문서가 활성화되지 않은 경우 다음과 같이 통합 문서의 객체에 액세스할 수 있습니다:
Workbooks("Book2.xlsm").Sheets("Sheet1").Range("A1").value = 1
통합 문서가 활성 상태인 경우 통합문서 객체를 생략할 수 있습니다:
Sheets("Sheet1").Range("A1").value = 1
또한 통합 문서의 활성 시트와 상호 작용하려는 경우 시트 객체를 생략할 수도 있습니다:
Range("A1").value = 1
통합문서 활성화하기
통합 문서를 활성화하려면 Activate 메서드를 사용합니다.
Workbooks("Book2.xlsm").Activate
위 코드를 실행한 후 통합 문서 이름을 명시적으로 지정하지 않고도 Book2의 개체와 상호 작용할 수 있습니다.
ActiveWorkbook
ActiveWorkbook 객체는 활성 통합 문서를 참조합니다. 이 메서드는 나중에 사용할 변수에 현재 활성화된 통합문서를 할당하려는 경우에 유용합니다.
Dim wb As Workbook
Set wb = ActiveWorkbook
ThisWorkbook
ThisWorkbook 객체는 실행 중인 코드가 저장된 통합 문서를 참조합니다. 이 통합 문서를 활성화하려면 다음 코드를 사용해야합니다:
ThisWorkbook.Activate
통합문서 열기
통합 문서를 열려면 Open 메서드를 사용합니다:
Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm")
새로 열린 통합 문서는 항상 ActiveWorkbook이 되므로 쉽게 상호 작용할 수 있습니다.
ActiveWorkbook.Save
Open 메서드에는 읽기 전용으로 열기, 암호로 보호된 통합 문서 열기 등을 수행할 수 있는 몇 가지 다른 인수가 있습니다. 이에 대해서는 통합 문서 열기/닫기에 대한 튜토리얼에서 자세한 내용을 확인해 보세요.
통합 문서 열고 변수에 할당하기
통합 문서를 열면서 동시에 변수에 할당할 수도 있습니다:
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\StevePC2\Downloads\book2.xlsm")
파일 열기 대화상자 사용하기
다음과 같이 파일 열기 대화 상자를 사용할 수도 있습니다:
Sub OpenWorkbook ()
Dim strFile As String
strFile = Application.GetOpenFilename()
Workbooks.Open (strFile)
End Sub
새(추가) 통합 문서 만들기
아래 코드를 사용하여 새 통합 문서를 만들 수 있습니다:
Workbooks.Add
위 코드를 실행하면 새 통합 문서가 ActiveWorkbook이 되어 통합 문서와 상호 작용할 수 있습니다(예: 새 통합 문서 저장하기).
새 통합 문서 추가하고 변수에 할당하기
새 통합 문서를 추가하고 변수에 할당할 수도 있습니다:
Dim wb As Workbook
Set wb = Workbooks.Add
통합문서 닫기
저장하고 닫기
저장과 함께 통합 문서를 닫으려면 SaveChanges를 TRUE로 설정한 상태에서 Close 메서드를 사용합니다:
ActiveWorkbook.Close SaveChanges:=True
저장하지 않고 닫기
저장하지 않고 닫으려면 SaveChanges를 FALSE로 설정합니다:
ActiveWorkbook.Close SaveChanges:=False
다른 이름으로 통합 문서 저장하기
SaveAs 메서드는 통합 문서를 다른 이름으로 저장하는 데 사용됩니다.
동일한 디렉터리에 새 이름으로 통합 문서를 저장하려면 다음과 같이 경로를 생략하고 저장할 파일이름만 지정하면 됩니다:
ActiveWorkbook.SaveAs "new"
여기서 “new”는 새 파일 이름입니다.
통합 문서를 특정 파일 확장명을 가진 새 디렉터리에 저장하려면 새 디렉터리와 파일 이름을 지정해야 합니다:
ActiveWorkbook.SaveAs "C:\Users\StevePC2\Downloads\new.xlsm"
기타 VBA Workbook 예제
통합 문서 이름
통합 문서의 이름을 가져옵니다:
MsgBox ActiveWorkbook.Name
통합 문서 보호하기
통합 문서를 편집하지 못하도록 보호하려면 Protect 메서드(암호는 선택 사항)를 사용할 수 있습니다:
Workbooks("book1.xlsm").Protect "password"
통합 문서의 보호를 해제하려면 Unprotect 메서드를 사용합니다:
Workbooks("book1.xlsm").Unprotect "password"
열려 있는 모든 통합 문서 반복하기
아래 코드는 열려 있는 모든 통합 문서를 반복합니다:
Sub LoopThroughWBs()
Dim wb As Workbook
For Each wb In Workbooks
MsgBox wb.Name
Next wb
End Sub
통합 문서 활성화 이벤트
통합 문서 열기 이벤트를 사용하여 특정 통합 문서가 열릴 때마다 코드를 실행할 수 있습니다.
아래 프로시저를 통합 문서의 ThisWorkbook 모듈에 배치하면 됩니다:
Private Sub Workbook_Open()
Sheets("sheet1").Activate
End Sub
위 프로시저는 통합 문서가 열릴 때마다 Sheet1을 활성화합니다.