1. 아별툴
  2. 아별툴 패밀리
  3. 엑셀 질문하기
  4. 엑셀 강좌
  5. 엑셀 팁
  6. 엑셀 자료실
  7. 엑셀 연구과제
  8. 엑셀 북마크
  9. 관련 프로그램 소개

[펌] Excel Macro(VBA) 입문자를 위한 소개자료

조회 수 6663 추천 수 0 2008.12.19 10:04:43

Excel Macro에 입문하려는 사람들에게 추천할만한 소개 자료입니다.

출처 : Microsoft Office OnLine

 
특정 날짜의 판매 데이터를 입력하거나 워크시트 (워크시트: 데이터를 저장하고 작업하기 위해 Excel에서 사용하는 기본 문서입니다. 스프레드시트라고도 합니다. 워크시트는 열과 행으로 구성되는 셀로 이루어지며, 항상 통합 문서 안에 저장됩니다.)에 수식을 추가하는 등 Excel에서 수행하는 많은 작업들이 일회성 작업입니다. 셀 범위의 서식을 변경하는 것과 같은 작업은 자주 반복되지만 Excel의 도구를 사용하여 손쉽게 처리할 수 있습니다. 그러나 하나 이상의 작업을 여러 번 반복해야 하고 게다가 그러한 작업을 수행하는 절차도 복잡한 경우가 있을 수 있습니다.

예를 들어 동료에게 보고서를 발표할 때마다 중요한 셀 여러 개를 강조하고 싶은 경우 여러 단계를 통해 수동으로 작업하기보다 매크로나 일련의 기록된 동작을 만들어 필요한 절차를 수행할 수 있습니다. 또는 VBA(Microsoft Visual Basic® for Applications) 프로그래밍 언어에 능숙하다면 처음부터 사용자 지정 매크로를 작성할 수도 있습니다. 두 경우 모두 매크로를 만든 후 필요에 따라 직접 매크로를 실행하고 편집하고 삭제할 수 있습니다.

이 문서에서는 직접 Excel 매크로를 작성할 수 있는 환경인 개체 지향 프로그래밍 및 Visual Basic Editor에 대해 소개합니다. 사용자 지정 매크로를 직접 작성할 준비가 된 경우 Frank Rice의 Microsoft Office Excel 2003 개체 모델 사용 안내(영어)를 참고하여 자세한 과정을 살펴보십시오.

Visual Basic Editor 사용

Visual Basic Editor를 사용하면 매크로 기록을 통해 복잡한 과정을 간단히 수행하는 데 그치지 않고 더 효율적이며 다양한 방법으로 매크로를 활용할 수 있습니다. Visual Basic Editor를 열려면 도구 메뉴에서 매크로를 가리키고 Visual Basic Editor를 클릭하거나 Alt+F11을 누릅니다.

특정 매크로를 열려면 도구 메뉴에서 매크로를 가리키고 다시 매크로를 클릭하거나 Alt+F8을 누릅니다. 매크로 대화 상자에서 편집하거나 보려는 매크로를 선택한 다음 편집을 클릭하여 Visual Basic Editor를 엽니다.

Visual Basic Editor의 개체 지향 프로그래밍

Visual Basic Editor에서는 개체 지향 프로그래밍을 사용하여 자신만의 프로그램을 만들 수 있습니다. 원칙적으로 프로그램이란 지정된 순서에 따라 컴퓨터에서 실행하는 명령들의 집합입니다.

개체 지향 프로그래밍 언어에서 컴퓨터 코드는 모든 면에서 사용자 환경의 구성 요소를 기반으로 합니다. 이러한 "구성 요소"는 개체로 표현되며 모든 동작 및 데이터는 이러한 개체 내에서 캡슐화됩니다. Excel에서는 통합 문서, 워크시트, 셀 범위 및 외부 파일이 개체가 될 수 있습니다.

일반적으로 프로그램을 구체적으로 지정하는 데 사용하는 개체 항목으로는 속성, 메서드, 이벤트 및 컬렉션이 있습니다.

속성

기본적으로 속성은 포함된 개체의 일부 특성을 설명하는 변수입니다. Excel의 일반적인 개체 속성으로 이름 속성이 있습니다. 이 속성에는 통합 문서, 워크시트, 셀 범위 또는 기타 개체에 사용자가 지정하거나 Excel에서 지정한 식별 값이 저장되어 있습니다. 예를 들어 VBA 코드를 사용하거나 워크시트 탭을 마우스 오른쪽 단추로 클릭하여 통합 문서의 이름을 변경하면 이름 속성에 저장된 값도 변경됩니다.

이름과 같은 일부 워크시트 속성에 대해 VBA에서 직접 새로운 값을 설정할 수 있습니다. 워크시트의 다른 속성들을 변경하려면 셀 범위 보호 절차와 같은 동작을 Excel에서 기록하거나 다음 섹션에서 설명할 메서드를 사용해야 할 수도 있습니다.

VBA에서 속성은 점 표기법으로 프로그램에서 참조됩니다. 점 표기법에서는 개체 이름을 먼저 쓰고 그 뒤에 속성 이름을 쓴 다음 두 요소를 마침표로 분리합니다. 예를 들어 워크시트의 이름을 변경하려면 Worksheet.Name 속성을 사용합니다.

메서드

메서드는 개체가 그 실행 방법을 "알고 있는" 동작을 말합니다. 예를 들어 Excel 창에 표시되는 워크시트를 현재 워크시트라 하는데, 메서드를 이용하여 이를 지정할 수 있습니다. Excel VBA 코드에서 워크시트의 Activate 메서드를 먼저 호출하여 영향을 줄 대상 워크시트를 지정하면 됩니다. Activate 메서드가 실행되면 해당 메서드가 적용되는 대상 워크시트가 Excel 창의 워크시트 중 맨 앞으로 이동하여 편집이 가능하게 됩니다.

속성과 마찬가지로 메서드도 점 표기법으로 호출됩니다. 워크시트의 모든 수식을 다시 계산하려면 Worksheet.Calculate 메서드를 호출해야 합니다.

이벤트

속성은 개체의 정량화할 수 있는 특성이고 메서드는 개체가 그 실행 방법을 알고 있는 동작이라면 이벤트는 개체가 그 발생 사실을 "인식하고 있는" 동작이라 할 수 있습니다. 예를 들어 Excel 2003에서는 다음과 같은 이벤트가 파악됩니다.

  • 통합 문서 열기 또는 닫기
  • 워크시트 활성화 또는 비활성화
  • 통합 문서 저장
  • 차트 클릭
  • 키 또는 키 조합 누르기
  • 셀에 데이터 입력
  • 워크시트의 수식 다시 계산
  • 하이퍼링크로 이동

Excel에는 특정 동작을 감시하는 다양한 이벤트 처리기 또는 코드 루틴이 포함되어 있습니다. 이러한 동작 중 하나가 발생할 경우 해당 이벤트가 발생할 때 Excel에서 수행할 동작을 사용자가 지정해두었다면 해당 이벤트 처리기의 코드가 실행됩니다. 예를 들어 새 통합 문서를 만든 후 Excel에서 모든 열린 통합 문서가 계단식 창 모음 형태로 표시되도록 하려면 다음과 같은 이벤트 처리기를 생성할 수 있습니다.

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
   Application.Windows.Arrange xlArrangeStyleCascade
End Sub

이벤트 처리기 루틴의 모든 요소가 각각 어떤 역할을 하는지 모르더라도 염려할 필요가 없습니다. 여기서는 코드의 가운데 줄에만 집중하면 됩니다. 이 부분이 Excel에서 계단식 스타일로 창을 배열하도록 지정하는 부분입니다. Excel에서 메뉴 명령( 메뉴, 정렬 명령, 계단식 하위 명령)을 사용해도 같은 결과를 얻을 수 있지만 특정 이벤트가 발생할 때마다 해당 동작이 실행되도록 지정하려면 VBA를 사용하여 자동 실행되도록 하는 것이 좋습니다. 

컬렉션

반드시 알아야 할 개체 지향 프로그래밍의 마지막 요소는 컬렉션입니다. 이름에서 알 수 있듯이 컬렉션은 다른 개체에 포함된 형식이 같은 개체의 그룹입니다. 예를 들어 통합 문서에는 한 개 이상의 워크시트로 이루어진 하나의 컬렉션이 있습니다. 한 통합 문서의 모든 워크 시트에 같은 변경 사항을 적용하려면 컬렉션의 각 워크시트에 대해 차례로 프로그래밍 방식으로 변경 사항을 적용할 수 있습니다.

프로그램을 만든 경험이 있다면 다음과 같은 시퀀스를 사용하여 명령 집합을 여러 번 반복하도록 하는 For…Next 루프를 실행해 보았을 것입니다. 다음은 처음 세 워크시트의 바닥글 오른쪽 섹션에 현재 통합 문서의 디렉터리 경로를 추가하는 예제입니다.

For i = 1 to 3
   Worksheets(i).PageSetup.RightFooter = Path
Next i

For…Next 루프의 최대 제한값을 하드 코딩(설정값 지정)할 때 직면하게 되는 문제는 워크시트를 추가하거나 삭제할 때마다 코드를 변경해야 한다는 점입니다. 처음 한두 번은 별로 문제되지 않지만 많은 코드를 관리할 때는 몇 군데에서 코드를 변경하는 것을 잊을 위험이 있습니다. 그렇게 되면 오류가 발생하며 해당 오류를 반드시 수정해야 합니다. 더욱이 먼저 인쇄된 500부의 연차 보고서에 서식 오류가 있다는 것이 맞춤법 검사 과정에서 발견될 때까지 이러한 오류가 확인되지 않을 수도 있습니다. 작성자가 마음 놓고 휴가를 떠난 상태라면 문제는 더 커집니다.

코드 일부를 사용하여 통합 문서에 있는 워크 시트의 수를 확인할 수도 있지만 더 간단한 방법이 있습니다. For Each…Next 루프를 사용하면 통합 문서의 워크시트, 각 항목의 단계 등, 컬렉션에 포함된 개체의 수를 알아낼 수 있습니다. 이 방법을 사용하면 위의 코드를 다음과 같이 작성할 수 있습니다.

For Each Wksht in Worksheets
    Wksht.PageSetup.RightFooter = Path
Next Wksht
		

표준 For…Next 루프에서 값을 늘리는 대신 For Each…Next 루프는 Worksheets 컬렉션의 다음 구성원을 검색하고 더 이상 발견되지 않을 경우 실행을 중지합니다.

Visual Basic Editor 및 Visual Basic Editor의 창

Visual Basic Editor는 다양한 창에 서로 다른 정보를 표시합니다. 매크로 작성을 시작할 때 알아야 할 중요한 창으로는 다음과 같이 프로젝트 탐색기 창, 속성 창 및 코드 창이 있습니다.

프로젝트 탐색기 창

Visual Basic Editor를 직접 여는 경우 프로젝트 탐색기 창에서 작업할 매크로를 선택할 수 있습니다. 프로젝트 탐색기에서는 포함된 모든 프로젝트(코드 그룹)와 매크로가 Windows® Explorer의 트리 보기처럼 작동하는 트리 뷰로 표시됩니다. 사용자가 작업 중인 현재 통합 문서, 열려 있는 기타 통합 문서 및 추가 기능이 트리 구조의 루트 또는 기준 개체가 될 수 있습니다.

VBA 프로젝트에서 사용되는 주요 요소는 각 프로젝트 내의 개별 폴더에 저장됩니다. 다음 항목이 이러한 요소에 해당합니다.

  • 개체(이 문서의 앞 부분에서 설명)
  • 워크시트와 연결된 매크로 코드가 포함된 모듈
  • 사용자의 통합 문서를 위해 만든 사용자 정의 개체의 정의인 클래스 모듈
  • 단추, 이미지, 텍스트 영역과 같은 그래픽 컨트롤을 배치할 수 있는 보이는 표면에 해당하는 사용자 양식

다음 예에서 현재 통합 문서는 VBAProject로 확인되었습니다. 통합 문서에 포함된 세 개의 워크시트(Sheet1, Sheet2, Sheet3)는 통합 문서 전체(ThisWorkbook)와 함께 Microsoft Office Excel 개체 폴더에 나타납니다. VBA에서 프로그래밍되거나 기록된 모든 매크로는 Modules 폴더에 표시됩니다. 클래스 모듈 또는 사용자 양식은 각각 Class Modules 폴더 또는 Forms 폴더에 표시됩니다.

프로젝트 탐색기 창, 속성 창 및 코드 창

속성 창

프로젝트 탐색기 창 바로 아래에 위치한 속성 창에서는 선택된 개체와 관련된 다양한 속성을 검사하고 변경할 수 있습니다. 모듈의 경우 주로 이름 속성만 사용할 수 있습니다. 워크시트에는 StandardWidthDisplayPageBreaks 등의 변경할 수 있는 추가 속성이 있습니다. 사용자 양식으로 작업할 경우 속성 창에서 속성을 변경하는 작업이 가장 많이 실행됩니다.

참고  이때 속성 창의 이름 속성 상자에서 개체에 대해 표시되는 이름은 Excel의 해당 개체 이름과 반드시 같지는 않습니다. 두 이름은 비슷해 보이지만 Visual Basic Editor에서 개체에 대해 사용되는 기본 이름 규칙 때문에 서로 다를 수도 있습니다. 예를 들어 이름에 공백이 없어야 하고 첫 글자는 문자여야 하며 예약어를 사용할 수 없고 길이는 31자 이내여야 한다는 등의 규칙이 있을 수 있습니다. 그러나 이름이 다르더라도 올바른 개체를 참조하도록 내부적으로 서로 연결되어 있을 수 있습니다.

코드 창

코드 창은 Visual Basic Editor에서 가장 큰 창으로, 상단에 두 개의 드롭다운 상자가 있습니다. 왼쪽에 있는 드롭다운 상자인 개체 상자를 사용하여 작업할 개체를 선택합니다. 코드 작업만 수행할 경우에는 상자에 기본값인 일반 개체가 표시됩니다. 두 번째 드롭다운 상자인 프로시저 상자를 사용하여 현재 모듈에 있는 개별 매크로를 선택합니다. 매크로가 해당 모듈에 추가되고 삭제되면 프로시저 상자에도 매크로가 추가되고 삭제됩니다.

코드 창

위쪽 화살표 및 아래쪽 화살표로 코드 목록을 스크롤하여 원하는 매크로를 찾을 수도 있습니다. 코드를 스크롤하면 프로시저 상자가 업데이트되어 현재 매크로가 반영됩니다.

추가 정보

Excel 매크로 생성에 대한 자세한 내용은 Microsoft Office Excel 2003 개체 모델 사용 안내(영어)를 참고하십시오.




문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 33988
44 기타 엑셀 기본 제공 대화 상자 인수 목록 file [레벨:30]아별 2009-11-04 8035
43 엑셀2007에서 셀의 색상을 RGB로 뽑아내기 file [레벨:30]아별 2009-10-06 10239
42 [VBA팁] 화일이 존재하는지 확인하기 [레벨:30]아별 2009-07-31 8037
41 엑셀에서 사용하는 언어 확인하기. file [1] [레벨:30]아별 2009-06-03 13819
40 메시지 박스 대용으로 Shape 사용하기 file [레벨:30]아별 2009-05-07 16081
39 유저폼 크기 조절 가능하게 만들기 file [레벨:30]아별 2009-05-07 5865
38 스스로 사라지는 메시지 박스 file [1] [레벨:30]아별 2009-05-07 5622
37 마우스 좌표를 반환 받기 file [레벨:30]아별 2009-05-07 5836
» [펌] Excel Macro(VBA) 입문자를 위한 소개자료 image [레벨:30]아별 2008-12-19 6663
35 기타 [Excel VBA] 피벗테이블(PivotTable)을 VBA로 컨트롤해보자.. [레벨:30]아별 2008-12-19 12189
34 [펌] 엑셀로 최대 공약수 구하기 [2] [레벨:30]아별 2008-12-18 5290
33 바로 옆셀의 메모값 가져 오기 [1] [레벨:30]아별 2008-10-20 5505
32 [엑셀VBA] ERROR CODE file [레벨:30]아별 2008-08-28 7400
31 [엑셀VBA] 자동필터를 매크로로 구현하기 [레벨:30]아별 2008-08-28 11267
30 [VBA] 전역변수 설정하기. Public 문, Private 문 imagefile [레벨:30]아별 2008-07-01 14089
29 [엑셀VBA] 네이버 지식인 답변 _ 엑셀 쿼리를 이용해서 펀드 기준가 데이터를 읽어오기. file [레벨:30]아별 2008-04-30 9166
28 엑셀 추가 기능 만들기 [레벨:30]a☆ 2006-01-19 7369
27 메모 입력할때 사용자 이름 제거하고 입력하기.. [레벨:30]a☆ 2006-01-19 5421
26 시트에서 콤보박스 활용하기 file [레벨:30]a☆ 2005-11-12 16759