엑셀 Excel VBA 통합 문서의 기본 이벤트 함수를 이용해 문서가 열릴 때 기능 구현하는 방법

 

환경: Microsoft Excel 2013

 

VBA 에는 기본적으로 엑셀과 관련된 Callback 이벤트 함수들을 제공합니다. 엑셀 프로그램을 사용하는 도중에 발생하는 이벤트들을 받아서 원하는 로직을 구현할 수 있는 것입니다. 오늘은 문서가 열릴 때 발생하는 이벤트 함수에 기능을 구현해 보겠습니다. 보통 언제 문서를 작업했는지 작업 날짜를 표시하고 싶을 때 많이 사용합니다. 작업 문서 이벤트는 크게 2가지로 나눌 수 있습니다. 하나는 Workbook 이벤트 입니다. 프로그램 전체에서 발생하는 Callback 이벤트 함수들이 들어가 있습니다. 또 다른 하나는 Worksheet 입니다. 해당 Sheet 에서 발생하는 이벤트 함수들로 구성이 되어 있습니다. 이번 포스팅에서는 Workbook Workbook_open() 함수를 이용해서 통합문서가 열릴 때 현재 날짜를 표시할 것입니다.

 

먼저 Workbook Worksheet 가 어떻게 다른지 알아 보겠습니다. 그림처럼 왼쪽 탐색기에서 Sheet1 열었다면 이벤트 함수의 첫 번째 선택란에는 Worksheet 가 나타납니다

엑셀 Excel VBA 통합 문서의 기본 이벤트 함수를 이용해 문서가 열릴 때 기능 구현하는 방법

 

엑셀 프로그램 전체에 대한 이벤트 함수는 현재_통합_문서를 클릭해서 열어야 합니다. 그럼 오른쪽 이벤트 함수 첫 번째 선택란에 Workbook 이 나타납니다. 두 번째 선택란에서 Open 을 선택합니다. 아래 에디터에는 통합 문서가 열릴 때 발생하는  Workbook_open() 이벤트 함수가 만들어 집니다

엑셀 Excel VBA 통합 문서의 기본 이벤트 함수를 이용해 문서가 열릴 때 기능 구현하는 방법

 

Workbook_open() 이벤트 함수에는 문서를 열 때마다 작업 이력을 표시하기 위해 작성자와 날짜를 입력할 것입니다. 그리고 전체 이력을 남기기 위해 이전 입력값 아래에 표시가 되어야 합니다

엑셀 Excel VBA 통합 문서의 기본 이벤트 함수를 이용해 문서가 열릴 때 기능 구현하는 방법

 

소스는 다음과 같습니다. 간략하게 소스를 설명하자면 시트명 Sheet1 A2 부터 시작해서 어디까지 표시되어 있는지 알아 낸 뒤 바로 아래에 이름과 현재 날짜를 표시합니다. CurrentRegion.Rows.count 를 이용해서 행의 수를 알아내고 Offset 으로 현재 위치와 현재위치에서 오른쪽으로 한 칸 옆으로 날짜를 입력합니다.

 

Private Sub Workbook_Open()

    Dim count, i

    With Sheets("Sheet4").Range("A2")

        i = .CurrentRegion.Rows.count

        .Offset(i, 0) = Application.UserName

        .Offset(i, 1) = Now()

    End With

End Sub

 

그림처럼 문서를 열 때마다 함수를 실행해서 시트에 값이 추가했습니다. 이렇게 문서에 대한 사용자의 작업 이력을 남길 수 있습니다

엑셀 Excel VBA 통합 문서의 기본 이벤트 함수를 이용해 문서가 열릴 때 기능 구현하는 방법


저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군