매크로를 처음 배운 사람이 자주 저지르는 실수가 있다. “기록”만 되는 줄 알고 쓰다가, 나중에 VBA를 접하고서야 자신이 매크로 기능의 일부만 활용했다는 걸 깨닫는 것이다. 엑셀 매크로 종류는 생성 방식과 실행 트리거에 따라 크게 네 가지 계열로 나뉘며, 어떤 유형을 선택하느냐에 따라 자동화의 범위가 완전히 달라진다.
매크로가 뭔지 먼저 확인하자
매크로(Macro)는 반복되는 작업 절차를 하나의 명령으로 묶어 실행하는 기능이다. 엑셀에서는 이 절차를 VBA(Visual Basic for Applications)라는 언어로 저장한다. 클릭 동작을 그대로 녹화하든, 코드를 직접 짜든 — 최종 실행 단위는 결국 VBA 서브루틴(Sub)이다.
중요한 구분이 하나 있다. 매크로 자체가 하나의 유형이 아니다. 만드는 방법과 실행 방식에 따라 성격이 완전히 달라진다. 매크로와 VBA의 관계가 헷갈린다면, 엑셀 매크로와 VBA의 차이를 정리한 글을 먼저 읽어두면 이후 개념이 정리된다.
생성 방식으로 나누는 두 가지 계열
기록 매크로 (Recorded Macro)
개발 탭 → [매크로 기록] 버튼을 누르면 이후의 클릭·입력·서식 변경이 모두 VBA 코드로 변환되어 기록된다. 코드를 전혀 몰라도 만들 수 있다는 게 장점이다. 단, 기록된 코드는 군더더기가 많고 조건 분기나 반복 구조(루프)를 담지 못한다는 한계가 있다.
기록 매크로 안에도 중요한 갈림길이 하나 있다.
- 절대참조 매크로: 항상 고정된 셀(예: A1)에서 작업한다. 매번 같은 위치에 데이터가 있는 경우에만 정확히 동작한다.
- 상대참조 매크로: 현재 커서 위치를 기준으로 상대적으로 이동한다. 행 수가 달라지는 데이터에 반복 적용할 때 적합하다.
[개발 탭 → 상대 참조로 기록] 버튼을 켠 상태로 기록해야 상대참조 모드가 된다. 기본값이 절대참조이므로, 이 토글을 놓치고 의아한 결과를 만나는 경우가 많다. 흔히 오해하는 부분인데, 기록 매크로는 엑셀 자동화의 전부가 아니라 진입점이다.
VBA 직접 편집 매크로
Alt + F11로 VBA 편집기를 열어 코드를 직접 작성하는 방식이다. 기록 매크로로는 구현할 수 없는 조건 분기(If), 반복(For / Do While), 외부 파일 연결, 셀 값 연산이 가능해진다. 실무에서는 기록 매크로로 초안을 잡고 VBA 편집기에서 구조를 다듬는 방식을 자주 쓴다.
한 가지 팁: 기록 매크로로 생성된 코드를 VBA 편집기에서 열어보면 불필요한 속성값이 길게 달려 있다. 그 코드를 정리하는 과정 자체가 VBA 학습의 지름길이다. 코드 리뷰처럼 자신의 기록을 분석하는 것이다.
실행 트리거로 나누는 유형들
버튼·폼 컨트롤 매크로
시트에 버튼을 삽입하고 매크로를 연결하면, 클릭 한 번으로 원하는 Sub를 호출할 수 있다. [개발 탭 → 삽입 → 양식 컨트롤 → 단추]가 표준 경로다. VBA를 모르는 팀원도 버튼만 눌러 자동화를 실행할 수 있도록 UI를 제공하는 데 쓰인다. 업무 공유 파일에 가장 많이 활용되는 형태다.
이벤트 매크로 (Event Macro)
특정 동작이 발생했을 때 자동으로 실행되는 유형이다. VBA 편집기에서 ThisWorkbook 또는 Sheet 개체에 이벤트 프로시저를 작성한다. 사용자가 버튼을 누를 필요가 없다는 점이 핵심이다.
- Workbook_Open: 파일을 열 때 자동 실행 (오늘 날짜 갱신, 접속 로그 기록 등)
- Worksheet_Change: 특정 셀이 바뀌면 즉시 반응 (입력값 검증, 연동 계산 자동화 등)
- Workbook_BeforeSave: 저장 직전 실행 (필수 입력 항목 확인 등)
자동화 수준이 한 단계 올라가는 시점이 바로 이 이벤트 매크로를 쓰기 시작할 때다. 조건이 충족되는 순간 코드가 스스로 반응하기 때문에, 사용자 개입 없이 데이터가 처리되는 파이프라인을 만들 수 있다.
저장 위치에 따라 달라지는 사용 범위
매크로는 어디에 저장하느냐에 따라 쓸 수 있는 범위가 다르다.
| 저장 위치 | 접근 범위 | 파일 형식 | 적합한 상황 |
|---|---|---|---|
| 현재 통합문서 | 해당 파일에서만 | .xlsm | 특정 업무 파일 전용 자동화 |
| 개인용 매크로 통합문서 | 엑셀 실행 중 항상 가능 | PERSONAL.xlsb | 모든 파일에서 공통으로 쓰는 유틸리티 |
| 추가 기능(.xlam) | 추가기능 설치 후 항상 가능 | .xlam | 팀 배포·버전 관리가 필요한 경우 |
개인용 매크로 통합문서(PERSONAL.xlsb)는 엑셀 시작 시 자동으로 숨겨진 상태로 열리는 파일이다. [매크로 기록 대화상자 → 매크로 저장 위치: 개인용 매크로 통합문서]를 선택하면 처음 생성된다. 서식 정리, 셀 색상 초기화처럼 파일을 가리지 않고 쓰는 공통 동작을 여기에 모아두면 편리하다.
추가기능(.xlam)은 팀 단위 배포가 필요할 때 적합하다. 파일을 공유하고 각자 설치하면 동일한 매크로를 모든 구성원이 쓸 수 있다. 버전 관리가 필요하거나 회사 표준 도구로 배포해야 할 때 이 방식을 택한다.
상황별 선택 기준: 어떤 유형을 고를까
아래 기준으로 접근하면 대부분의 상황에서 적합한 유형이 정해진다.
- 반복 클릭 작업을 빠르게 자동화하고 싶다 → 기록 매크로 (상대참조 여부만 확인)
- 조건 분기·루프가 필요하다 → VBA 직접 편집 매크로
- 파일 열기·저장·셀 변경에 자동 반응해야 한다 → 이벤트 매크로
- 모든 파일에서 공통으로 쓰고 싶다 → 개인용 매크로 통합문서
- 팀 전체에 동일한 매크로를 배포해야 한다 → .xlam 추가기능
데이터 집계 단계에서는 매크로와 피벗테이블을 함께 쓰는 조합이 실무에서 자주 등장한다. 피벗 새로 고침을 매크로로 자동화하는 것이 대표적인 예다. 피벗테이블의 기능 자체가 궁금하다면 엑셀 피벗테이블의 기능과 활용법을 다룬 글을 함께 보면 두 기능이 어떻게 연결되는지 이해하기 쉽다.
정리: 유형을 알아야 자동화가 보인다
엑셀 매크로 종류를 구분하지 않으면 두 가지 함정 중 하나에 빠진다. 기록 매크로 하나로 모든 걸 해결하려다 한계에 막히거나, VBA부터 배우려다 진입 장벽에 막혀 포기하는 것이다. 기록 → VBA 편집 → 이벤트 → 배포 순서로 단계를 밟으면 자동화 범위가 자연스럽게 넓어진다. 어떤 유형이 지금 상황에 맞는지 판단하는 것, 그게 엑셀 자동화 학습의 진짜 출발점이다.
자주 묻는 질문
기록 매크로와 VBA 매크로 중 어느 것을 먼저 배워야 하나요?
기록 매크로로 시작해 VBA 편집기에서 코드를 다듬는 순서를 권장합니다. 기록으로 생성된 코드를 분석하는 과정 자체가 VBA 학습의 효율적인 진입 방법입니다.
상대참조 매크로와 절대참조 매크로는 어떻게 구분해서 써야 하나요?
매번 같은 셀 위치에서 작업한다면 절대참조, 데이터 행 수가 달라지거나 커서 위치가 변하는 작업이라면 상대참조를 선택합니다. 기록 전 개발 탭의 '상대 참조로 기록' 토글을 반드시 확인하세요.
엑셀 매크로를 저장할 때 파일 형식은 무엇을 써야 하나요?
매크로가 포함된 파일은 .xlsm 형식으로 저장해야 합니다. 일반 .xlsx로 저장하면 매크로가 삭제됩니다. 모든 파일에 공통으로 쓸 매크로는 개인용 매크로 통합문서(PERSONAL.xlsb)에 저장하세요.
이벤트 매크로는 파일을 열면 자동으로 실행되나요?
Workbook_Open 이벤트를 작성했더라도, 엑셀 보안 설정에 따라 실행이 차단될 수 있습니다. 신뢰할 수 있는 위치(Trusted Location)로 폴더를 등록하거나 파일 열 때 '콘텐츠 사용'을 허용해야 합니다.
개인용 매크로 통합문서(PERSONAL.xlsb)는 어디에 저장되나요?
일반적으로 C:\Users\[사용자명]\AppData\Roaming\Microsoft\Excel\XLSTART 폴더에 저장됩니다. 이 폴더의 파일은 엑셀 시작 시 자동으로 숨겨진 상태로 로드됩니다.