엑셀 & VBA/엑셀 VBA 강좌

엑셀 VBA 강좌(3): 엑셀 Object Model

ProDA 2021. 7. 11.

이 글은 새로운 블로그로 옮겼습니다. 5초후 자동으로 이동합니다.

▶ 새로운 블로그 주소: https://prodskill.com/

▶ 새로운 글 주소: https://prodskill.com/excel-vba-lecture-3-object-model/

이번 글은 엑셀 Object Model에 대한 내용을 살펴본다.

 

이전 글에서 이어지는 내용이다.

엑셀 VBA 강좌(2): 엑셀 VBA 기초(1)

 

엑셀 VBA 강좌(2): 엑셀 VBA 기초(1)

이전 글에서 이어지는 내용이다. 엑셀 VBA 강좌(1): 엑셀 VBA 개요 엑셀 VBA 강좌(1): 엑셀 VBA 개요 이전 엑셀 VBA 강좌 예고의 본편 첫글이다. 엑셀 VBA 강좌를 시작합니다. (강좌예고, feat.엑셀 VBA를 권

prodtool.tistory.com


 

목차


    2.3. 엑셀 Object Model

    엑셀 VBA는 엑셀을 다루는 프로그래밍 언어이다. 조금 더 정확하게는 엑셀의 Object Model을 다루는 언어이다. 엑셀이 어떻게 구조화되어 있는지 알고 있어야 잘 다룰 수 있다.

    아래 그림 한장만 이해하면 엑셀 Object Model에서 가장 중요하고 자주 사용하는 개념은 모두 알 수 있다.

    엑셀 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
    개체 찾아보기: Application

     

    Application 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.

    https://docs.microsoft.com/en-us/office/vba/api/excel.application(object)

     

    Application object (Excel)

     

    docs.microsoft.com

     

    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
    개체 찾아보기: Workbooks

     

    Workbooks 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.

    https://docs.microsoft.com/en-us/office/vba/api/excel.workbooks

     

    Workbooks object (Excel)

    Workbooks object (Excel) In this article --> A collection of all the Workbook objects that are currently open in the Microsoft Excel application. For more information about using a single Workbook object, see the Workbook object. Example Use the Workbooks

    docs.microsoft.com

     

    Workbooks 개체를 사용하는 예제 코드는 다음과 같다.

    'Workbooks 사용 코드 #1: 모든 파일 닫기
    Workbooks.Close
    
    'Workbooks 사용 코드 #2: 새로운 파일 생성하기
    Workbooks.Add
    
    'Workbooks 사용 코드 #3: 파일 열기
    Workbooks.Open FileName:="File.xlsx", ReadOnly:=True

     

    2.3.3. Workbook

    하나의 엑셀 process에서 열고 있는 파일 목록중 특정 파일 한개를 가리킨다. 파일을 닫거나, 저장하는 등의 용도로 이용한다.

    개체 찾아보기: Workbook
    개체 찾아보기: Workbook

     

    Workbook 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.

    https://docs.microsoft.com/en-us/office/vba/api/excel.workbook

     

    Workbook object (Excel)

    Workbook object (Excel) In this article --> Represents a Microsoft Excel workbook. The Workbook object is a member of the Workbooks collection. The Workbooks collection contains all the Workbook objects currently open in Microsoft Excel. The ThisWorkbook p

    docs.microsoft.com

    Workbook 개체를 사용하는 예제 코드는 다음과 같다.

    'Workbook 사용 코드 #1: 파일 닫기
    Workbook.Close
    
    'Workbooks 사용 코드 #2: 저장하기
    Workbook.Save
    
    'Workbooks 사용 코드 #3: 다른 이름으로 저장하기
    Workbook.SaveAs Filename:="NewFile.xlsx"

     

    2.3.4. Worksheets

    한 파일내의 시트 목록(collection)을 관리한다. 새로운 시트를 생성하거나, 삭제하는 등의 용도로 이용한다.

    개체 찾아보기: Worksheets
    개체 찾아보기: Worksheets

     

    Worksheets 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.

    https://docs.microsoft.com/en-us/office/vba/api/excel.worksheets

     

    Worksheets object (Excel)

    Worksheets object (Excel) In this article --> A collection of all the Worksheet objects in the specified or active workbook. Each Worksheet object represents a worksheet. The Worksheet object is also a member of the Sheets collection. The Sheets collection

    docs.microsoft.com

     

    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
    개체 찾아보기: Worksheet

     

    Worksheet 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.

    https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet

     

    Worksheet object (Excel)

    Worksheet object (Excel) In this article --> Represents a worksheet. The Worksheet object is a member of the Worksheets collection. The Worksheets collection contains all the Worksheet objects in a workbook. The Worksheet object is also a member of the She

    docs.microsoft.com

     

    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
    개체 찾아보기: Range

     

    Range 개체에 대한 자세한 내용은 아래 Microsoft 문서에서 확인할 수 있다.

    https://docs.microsoft.com/en-us/office/vba/api/excel.range(object) 

     

    Range object (Excel)

    Range object (Excel) In this article --> Represents a cell, a row, a column, a selection of cells containing one or more contiguous blocks of cells, or a 3D range. Note Interested in developing solutions that extend the Office experience across multiple pl

    docs.microsoft.com

     

    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에 대해 간략하게 알아보았다. 개체 찾아보기 기능으로 자세히 살펴보면, 마우스와 키보드로 실행할 수 있는 엑셀의 모든 기능과 속성, 이벤트들이 Object Model로 제공되는 것을 알 수 있다. 따라서, 엑셀 기능에 대해 잘 이해하고 잘 활용하고 있어야 엑셀 Object Model을 잘 활용할 수 있다. 엑셀을 활용하는 만큼 엑셀 VBA를 활용할 수 있다는 의미이다.

     

    다음에는 엑셀 Object Model의 개체를 사용하는 예시 코드를 살펴보고, 엑셀 Object Model에 대해서 조금 더 자세하게 설명하겠다.

     

    댓글

    💲 추천 글