엑셀 & VBA/엑셀 VBA 강좌

엑셀 VBA 강좌(4): 엑셀 Object Model 다루기

ProDA 2021. 7. 13.

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

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

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

이번 글은 엑셀 Object Model을 다루는 방법을 살펴본다.

 

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

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

 

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

이전 글에서 이어지는 내용이다. 엑셀 VBA 강좌(2): 엑셀 VBA 기초(1) 엑셀 VBA 강좌(2): 엑셀 VBA 기초(1) 이전 글에서 이어지는 내용이다. 엑셀 VBA 강좌(1): 엑셀 VBA 개요 엑셀 VBA 강좌(1): 엑셀 VBA 개요

prodtool.tistory.com


 

목차


    2.4. 간단한 코드로 엑셀 Object Model 이해하기

    2.4.1. 객체 접근 기본형

    파일, 시트, 범위(Range), 셀(Cell)을 접근하는 가장 기본적인 코드를 살펴보자. 참고로, 객체 접근시 전역 개체 Application은 생략할 수 있다. 아래 1 ~ 6 각 예시 두번째 줄에는 Application을 생략한 코드로 표현했다.

    '1. 이름이 t1.xlsx 인 파일
    Application.Workbooks("t1.xlsx")
    Workbooks("t1.xlsx") 
    
    '2. 이 파일의 Sheet1 시트
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1")
    Workbooks("t1.xlsx").Worksheets("Sheet1")
    
    '3. 이 시트의 A1 cell
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1")
    Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1") 
    
    '4. 이 시트의 A1 cell 에 "TEST" 문자열 입력
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1") = "TEST"
    Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1") = "TEST"
    
    '5. 이 시트의 A1 cell 글꼴을 굵게(Bold) 설정
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1").Font.Bold = True
    Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1").Font.Bold = True
    
    '6. 이 시트의 A2:D4 범위
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A2:D4")
    Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A2:D4")

     

    하나씩 자세히 살펴보자.

    '1. 이름이 t1.xlsx 인 파일
    Application.Workbooks("t1.xlsx")
    Workbooks("t1.xlsx")

    ▲ 현재 엑셀에서 열려있는 파일중 이름이 "t1.xlsx"인 파일을 가리키는 구문이다. Workbooks는 열려 있는 파일들의 목록(colletion)을 관리한다. 여러 파일 중 하나를 고를 때 Workbooks collection에 '파일명'을 parameter로 접근한다. (참고로, 파일명 외에 "Workbooks(1)"과 같이 파일이 열린 순번을 parameter로 사용할 수도 있다.)

     

    '2. 이 파일의 Sheet1 시트
    Application. Workbooks("t1.xlsx").Worksheets("Sheet1")
    Workbooks("t1.xlsx").Worksheets("Sheet1")

    ▲ 위에서 지정한 "t1.xlsx"파일의 "Sheet1" 시트를 가리키는 구문이다.  Worksheets는 한 파일의 시트 목록(collection)을 관리한다. 여러 시트 중 하나를 고를 때 Worksheets collection에 '시트명'을 parameter로 접근하면 된다. (Workbooks와 마찬가지로 "Worksheets(1)"과 같이 시트의 순번을 parameter로 사용할 수도 있다.)

     

    '3. 이 시트의 A1 cell
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1")
    Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1")

    ▲ 위에서 지정한 "Sheet1" 시트의 "A1" cell을 가리키는 구문이다.

     

    '4. 이 시트의 A1 cell 에 "TEST" 문자열 입력
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1") = "TEST"
    Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1") = "TEST"

    ▲ 위에서 접근한 cell에 문자열 값을 입력하는 코드이다. 문자열, 숫자 등 모든 유형의 값을 입력할 수 있다.

     

    '5. 이 시트의 A1 cell 글꼴을 굵게(Bold) 설정
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1").Font.Bold = True
    Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A1").Font.Bold = True

    ▲ Range 개체를 이용하여 cell 서식을 설정하는 코드이다. 글꼴 명칭, 색상, 크기, 배경색상, cell 테두리 종류, 테두리 색상 등 모든 cell 서식을 VBA 코드로 설정할 수 있다.

     

    '6. 이 시트의 A2:D4 범위
    Application.Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A2:D4")
    Workbooks("t1.xlsx").Worksheets("Sheet1").Range("A2:D4")

    ▲ Range 개체는 여러 연속된 cell을 가리킬 수 있다. Range("A2:D4")는 '2행 1열' ~ '4행 4열'을 나타낸다.

    Range("A2:D4")

     

    2.4.2. 객체 접근 단순형

    현재 파일, 시트를 접근할 때는 다음과 같이 단순하게 사용할 수 있다. 이 코드는 단순하여 가독성은 높으나, 실행중에 현재 파일, 현재 시트가 변경되는 경우는 주의가 필요하다.

    '1. 현재 열려있는 파일
    ActiveWorkbook
    
    '2. 현재 열려있는 시트
    ActiveWorksheet
    
    '3. 현재 열려있는 시트의 A1 cell
    Range("A1")
    ActiveWorksheet.Range("A1")
    
    '4. 현재 열려있는 시트의 A1 cell 에 "TEST" 라는 값 할당
    Range("A1") = "TEST"
    
    '5. 현재 열려있는 시트의 시트의 A1 cell 글꼴을 굵게(Bold) 설정
    Range("A1").Font.Bold = True
    
    '6. 현재 열려있는 시트의 A2:D4 범위
    Range("A2:D4")

     

    2.4.3. 객체 접근 & 활용 예제

    객체에 접근하는 몇가지 사례를 더 살펴보자.

    '1. 현재 열려있는 파일들
    Workbooks
    
    '2. 현재 열려있는 파일들의 수
    Workbooks.Count
    
    '3. 새로운 파일 만들기
    Workbooks.Add
    
    '4. 현재 파일을 C:\test.xlsx로 저장하기
    ActiveWorkbook.SaveAs "C:\test.xlsx"
    
    '5. 현재 파일의 이름을 보여주기
    MsgBox ActiveWorkbook.Name
    
    '6. 현재 열려있는 파일의 시트들
    Worksheets
    
    '7. 현재 열려있는 파일의 시트들의 수
    Worksheets.Count
    
    '8. 새로운 시트 만들기
    Worksheets.Add
    
    '9. Sheet1을 삭제하기
    Worksheets("Sheet1").Delete
    
    '10. 현재 시트의 이름을 보여주기
    MsgBox ActiveSheet.Name
    
    '11. 현재 열려있는 시트의 A1 cell 선택
    Range("A1").Select
    
    '12. 현재 열려있는 시트에서 사용된 영역을 선택
    ActiveSheet.UsedRange.Select

     

    2.5. 엑셀 Object Model 상세

    자주 사용하는 엑셀 Object Model의 계층구조는 다음과 같다. 이 그림에 표기된 개체들은 엑셀 VBA에 제공하는 전체가 아닌 일부이다. 이중에서 배경색이 있는 객체는 지금까지의 내용에서 한번씩 다뤘었다. 

    엑셀 Object Model(일부)
    엑셀 Object Model(일부)

     

    흰색 배경의 개체들을 지금 모두 알아야 필요는 없다. 나중에 필요할 때 학습하고 이용해도 된다. 지금은 그냥 이런게 있구나 하는 정도로만 살펴보면 충분하다.

     

    전체 개체는 Microsoft Docs 사이트에 page1, page2, page3으로 나누어 정리되어 있다.

    엑셀 Object Model(전체)

     

    위 각 이미지의 출처는 다음 URL이다.

    Page1: https://docs.microsoft.com/en-us/previous-versions/office/developer/office-xp/aa141044(v=office.10)?redirectedfrom=MSDN 

     

    Microsoft Excel Object Model (page 1)

    Microsoft Excel Object Model (page 1) 06/14/2014 2 minutes to read In this article --> This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with

    docs.microsoft.com

     

    Page2: https://docs.microsoft.com/en-us/previous-versions/office/office-10/aa189565(v=office.10)?redirectedfrom=MSDN 

     

    Microsoft Excel Object Model (page 2)

    Microsoft Excel Object Model (page 2) 06/14/2014 2 minutes to read In this article --> This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with

    docs.microsoft.com

     

    Page 3: https://docs.microsoft.com/en-us/previous-versions/office/office-10/aa189566(v=office.10)?redirectedfrom=MSDN 

     

    Microsoft Excel Object Model (page 3)

    Microsoft Excel Object Model (page 3) 06/14/2014 2 minutes to read In this article --> This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with

    docs.microsoft.com

     


    이상으로 엑셀 Object Model에 대해서 자세하게 알아보았다. 다음에는 엑셀 VBA와 관련한 참고사항에 대하여 설명하겠다.

     

    댓글

    💲 추천 글