엑셀 VBA 강좌(3): 엑셀 Object Model
2.3. 엑셀 Object Model
엑셀 VBA는 엑셀을 다루는 프로그래밍 언어이다. 조금 더 정확하게는 엑셀의 Object Model을 다루는 언어이다. 엑셀이 어떻게 구조화되어 있는지 알고 있어야 잘 다룰 수 있다.
아래 그림 한 장만 이해하면 엑셀 Object Model에서 가장 중요하고 자주 사용하는 개념은 모두 알 수 있다.
위 그림의 Excel은 2010 버전이다. 엑셀 Object Model 개념을 이해하는데 더 적합하다고 생각하여 Excel 2010 버전으로 설명한다. Excel 버전과 관계없이 Object Model 개념은 동일하다.
이 그림 한장에 엑셀 Object Model의 필수 개념이 모두 들어있다. 각 개체의 개념과 상세 내용을 살펴보자.
참고로, VBA 편집기에서 “보기 > 개체 찾아보기”를 실행하면 각 개체의 상세 속성(property), 함수(function), 프로시저(sub), 이벤트(event)를 확인할 수 있다.
(VBA 편집기는 개발도구 리본메뉴에서 “Visual Basic” 버튼을 클릭하거나, 단축키 Alt + F11 을 누르면 나타난다.)
2.3.1. Application
Application은 엑셀 process를 가리킨다. 실행되어 있는 엑셀을 제어하거나 종료하려면 Application 개체를 이용한다.
Application 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.
Application object (Excel) | Microsoft Docs
Application 개체를 사용하는 예제 코드는 다음과 같다.
'Application 사용 코드 #1: 파일 활성화 하기 Application.Windows("book1.xls").Activate 'Application 사용 코드 #2: 엑셀 종료하기 Application.Quit()
2.3.2. Workbooks
하나의 엑셀 process에서 열고 있는 파일 목록(collection)을 관리한다. 새로운 파일을 생성하거나, 파일을 열거나 닫는 등의 용도로 이용한다. 파일 목록에서 특정 파일을 접근할 때 Workbooks(1), Workbooks(2), …, Workbooks(n)으로 접근할 수 있다.
Workbooks 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.
Workbooks object (Excel) | Microsoft Docs
Workbooks 개체를 사용하는 예제 코드는 다음과 같다.
'Workbooks 사용 코드 #1: 모든 파일 닫기 Workbooks.Close 'Workbooks 사용 코드 #2: 새로운 파일 생성하기 Workbooks.Add 'Workbooks 사용 코드 #3: 파일 열기 Workbooks.Open FileName:="File.xlsx", ReadOnly:=True
2.3.3. Workbook
하나의 엑셀 process에서 열고 있는 파일 목록중 특정 파일 한개를 가리킨다. 파일을 닫거나, 저장하는 등의 용도로 이용한다.
Workbook 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.
Workbook object (Excel) | Microsoft Docs
Workbook 개체를 사용하는 예제 코드는 다음과 같다.
'Workbook 사용 코드 #1: 파일 닫기 Workbook.Close 'Workbooks 사용 코드 #2: 저장하기 Workbook.Save 'Workbooks 사용 코드 #3: 다른 이름으로 저장하기 Workbook.SaveAs Filename:="NewFile.xlsx"
2.3.4. Worksheets
한 파일내의 시트 목록(collection)을 관리한다. 새로운 시트를 생성하거나, 삭제하는 등의 용도로 이용한다.
Worksheets 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.
Worksheets object (Excel) | Microsoft Docs
Worksheets 개체를 사용하는 예제 코드는 다음과 같다.
'Worksheets 사용 코드 #1: 첫번째 시트 앞에 2개 시트 추가 Worksheets.Add Count:=2, Before:=Sheets(1) 'Worksheets 사용 코드 #2: 시트 개수 출력 Debug.Print Worksheets.Count 'Worksheets 사용 코드 #3: Sheet3 뒤에 Sheet1 복사 Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")
2.3.5. Worksheet
한 파일내의 시트 하나를 가리킨다. 시트를 활성화하거나, 삭제하기, 숨기기, 보이기 등의 용도로 사용한다.
Worksheet 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.
Worksheet object (Excel) | Microsoft Docs
Worksheet 개체를 사용하는 예제 코드는 다음과 같다.
'Worksheet 사용 코드 #1: 시트 활성화 Worksheets("Sheet1").Activate 'Worksheet 사용 코드 #2: 시트 삭제 Worksheets("Sheet1").Delete 'Worksheet 사용 코드 #3: 시트 숨기기 Worksheets(1).Visible = False 'Worksheet 사용 코드 #4: 시트 보이기 Worksheets(1).Visible = True
2.3.6. Range
한 시트내의 하나의 cell 또는 여러 cell을 가리킨다. cell에 값을 입력하거나, 삭제하거나, cell들을 병합(merge)하는 등의 용도로 사용한다. 엑셀 VBA로 코딩할 때 가장 많이 사용하는 개체이다.
Range 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.
Range object (Excel) | Microsoft Docs
Range 개체를 사용하는 예제 코드는 다음과 같다.
'Range 사용 코드 #1: A1 cell의 값을 A5에 입력 Worksheets("Sheet1").Range("A5").Value = _ Worksheets("Sheet1").Range("A1").Value 'Range 사용 코드 #2: A1:E10 영역의 내용 삭제 Worksheets(1).Range("A1:E10").ClearContents 'Range 사용 코드 #3: A2(2행, 1열)에 B1:B5 합계 수식 입력 Worksheets(1).Range("A2").Formula = "=Sum(B1:B5)" Worksheets(1).Cells(2, 1).Formula = "=Sum(B1:B5)" 'Range 사용 코드 #4: 5행 삭제하기 Worksheets(1).Rows(5).Delete 'Range 사용 코드 #5: 3열(C) 삭제하기 Worksheets(1).Columns("C").Delete Worksheets(1).Columns(3).Delete 'Range 사용 코드 #6: A1:A2 cell 병합 Worksheets(1).Range("A1:A2").Merge
지금까지 살펴본 엑셀 Object Model의 계층구조와 개념, 용도를 간략하게 요약하면 다음과 같다.
이상으로 엑셀 Object Model에 대해 간략하게 알아보았다. 개체 찾아보기 기능으로 자세히 살펴보면, 마우스와 키보드로 실행할 수 있는 엑셀의 모든 기능과 속성, 이벤트들이 Object Model로 제공되는 것을 알 수 있다. 따라서, 엑셀 기능에 대해 잘 이해하고 잘 활용하고 있어야 엑셀 Object Model을 잘 활용할 수 있다. 엑셀을 활용하는 만큼 엑셀 VBA를 활용할 수 있다는 의미이다.
다음에는 엑셀 Object Model의 개체를 사용하는 예시 코드를 살펴보고, 엑셀 Object Model에 대해서 조금 더 자세하게 설명하겠다.
<< 관련 글 목록 >>
- 엑셀 VBA 강좌를 시작합니다. (강좌예고, feat.엑셀 VBA를 권장하는 이유)
- 엑셀 VBA 강좌(1): 엑셀 VBA 개요
- 엑셀 VBA 강좌(2): 엑셀 VBA 기초
- 엑셀 VBA 강좌(3): 엑셀 Object Model
- 엑셀 VBA 강좌(4): 엑셀 Object Model 다루기
- 엑셀 VBA 강좌(5): 엑셀 파일 확장자, VBE, 글꼴 설정
- 엑셀 VBA 강좌(6): 엑셀 VBA 언어 기본-변수
- 엑셀 VBA 강좌(7): 엑셀 VBA 언어 기본-문법(Syntax)
- 엑셀 VBA 강좌(8): 엑셀 VBA 언어 기본-자료형(Data type), 자료구조(Data structure)
- 엑셀 VBA 강좌(9): 엑셀 VBA How-To
- 엑셀 VBA 강좌(10): 엑셀 VBA로 개발하여 사용중인 도구
- 엑셀 VBA 강좌 전체 목차