“매크로 다룰 줄 안다”와 “VBA 짤 수 있다”는 이력서에서 자주 혼용되지만, 엑셀 매크로 VBA 차이를 모르면 이 두 표현이 의미하는 능력 수준 차이를 설명하기 어렵다. 결론부터 말하면, 매크로는 자동화된 동작의 묶음이고 VBA는 그것을 만드는 프로그래밍 언어다. 동의어가 아니라 포함 관계다. 이 구분을 이해하는 것이 엑셀 자동화 학습의 진짜 출발점이다.
매크로란 무엇인가 — 엑셀이 기억하는 동작의 시퀀스
매크로(Macro)의 원래 의미는 ‘반복 가능한 명령 묶음’이다. 엑셀에서 매크로는 사용자가 수행한 클릭·입력·서식 변경 같은 동작을 순서대로 기록했다가 버튼 하나로 재생하는 기능을 가리킨다.
가장 쉬운 진입점은 매크로 기록기(Record Macro)다. [개발 도구] 탭 → [매크로 기록]을 누른 뒤 원하는 작업을 수행하고 [기록 중지]를 누르면 끝이다. 이 과정에서 코드를 한 줄도 작성하지 않아도 된다. 반복 보고서 서식 세팅, 특정 열 삭제, 인쇄 영역 지정처럼 순서가 고정된 단순 반복 작업에서 효과가 크다.
그런데 매크로 기록기를 돌리고 나서 [매크로 편집]을 눌러 보면 낯선 코드가 나타난다. 바로 그게 VBA다.
VBA란 무엇인가 — 매크로를 만드는 언어
VBA(Visual Basic for Applications)는 마이크로소프트 오피스 제품군에 내장된 프로그래밍 언어다. 엑셀뿐 아니라 워드·아웃룩·액세스에서도 쓰이며, 엑셀 안에서는 셀 조작·파일 입출력·조건 분기·반복문·사용자 폼(UI) 등 거의 모든 자동화 로직을 구현할 수 있다.
매크로 기록기가 만들어 준 코드는 VBA의 극히 일부다. 기록기는 ‘직접 한 동작’만 코드로 옮기기 때문에, 조건에 따라 분기하거나(“잔액이 0 미만일 때만 색을 바꿔라”), 셀 수를 동적으로 세거나, 외부 파일을 열어 데이터를 가져오는 로직은 VBA를 직접 작성해야 한다.
정확히 말하면 매크로 기록기는 VBA 코드를 자동 생성하는 도구이고, VBA는 그 코드가 쓰인 언어다. 매크로는 VBA로 작성된 프로시저(Sub)의 다른 이름이기도 하다.
매크로 기록기 vs VBA 직접 작성 — 핵심 차이
| 구분 | 매크로 기록기 방식 | VBA 직접 작성 |
|---|---|---|
| 코드 작성 여부 | 없음 (자동 생성) | 직접 작성 |
| 조건·분기 처리 | 불가 | 가능 (If / Select Case) |
| 동적 범위 처리 | 기록 시점 범위로 고정 | 변수로 유연하게 처리 가능 |
| 반복 처리 | 불가 | 가능 (For / Do While) |
| 외부 파일 연동 | 제한적 | 가능 (FileSystemObject 등) |
| 오류 처리 | 없음 | On Error Resume / GoTo 사용 가능 |
| UI 제작 | 불가 | UserForm으로 입력 폼 제작 가능 |
| 진입 난이도 | 낮음 | 중간 (프로그래밍 기초 필요) |
매크로 기록기만으로 충분한 경우
다음 세 조건이 모두 해당한다면 VBA 없이도 충분히 자동화된다.
- 동작 순서가 항상 같다 (조건 분기가 없다)
- 처리할 데이터 범위가 매번 동일하다 (행 수가 바뀌지 않는다)
- 다른 파일을 열거나 외부 데이터를 가져올 필요가 없다
예를 들어, 매주 같은 형식으로 오는 판매 보고서에 항상 같은 서식을 입히고 같은 셀에 합계를 넣는 작업이라면 기록기 매크로 하나로 끝난다. 기록기를 처음 써 보려는 사람이라면 엑셀 매크로 환경을 세팅하는 방법부터 확인해 두면 진입 장벽이 훨씬 낮아진다.
VBA를 직접 써야 하는 상황 — 기록기가 못 하는 것들
매크로 기록기의 한계를 처음 실감하는 순간은 대개 이런 장면이다.
- 행 수가 매번 달라지는 데이터를 끝까지 처리해야 할 때 —
Cells(Rows.Count, 1).End(xlUp).Row로 마지막 행을 동적으로 찾아야 한다 - 특정 값이 있을 때만 색을 칠하거나 행을 삭제해야 할 때 — If 조건문이 없으면 구현 불가
- 폴더 안의 파일을 순회하며 데이터를 취합해야 할 때
- 비개발자도 쓸 수 있게 입력 폼(UserForm)을 만들어야 할 때
흔히 오해하는 것이 있다. 기록기가 만들어 준 코드를 ‘고정된 스크립트’로만 보는 시각이다. 실제로는 기록기 코드를 뼈대로 삼아 조건문과 반복문을 추가하는 방식이 VBA 입문의 가장 빠른 경로다. 처음부터 백지에 VBA를 쓰는 것보다 훨씬 학습 곡선이 완만하다.
실무에서 익히는 순서 — VBA부터 펼치면 오히려 늦다
“VBA를 먼저 공부해야 매크로를 제대로 쓸 수 있다”는 말은 반대다.
매크로 기록기를 먼저 써 보면 VBA 코드가 눈에 익는다. Sub와 End Sub 사이에 명령이 들어간다는 것, Range("A1").Value처럼 셀을 참조한다는 것, 자연스럽게 읽히기 시작한다. 이 상태에서 기록된 코드를 조금씩 고쳐 보면 문법이 몸에 밴다. VBA 교재만 들여다보면 문법은 알아도 ‘어디에 어떻게 쓰는지’가 막막해지는 경우가 많다.
권장 학습 순서를 정리하면 이렇다.
- 1단계: 매크로 기록기로 간단한 작업 자동화 (서식, 정렬, 인쇄 설정 등)
- 2단계: 생성된 VBA 코드를 읽고, 셀 주소나 값을 직접 수정해 보기
- 3단계: For 루프·If 조건문을 추가해 동적 처리 구현
- 4단계: 여러 Sub를 조합하고 오류 처리를 추가해 실무용 툴로 완성
3단계까지만 가도 일반적인 업무 자동화 수요의 80% 이상은 커버된다. 4단계는 팀 전체가 쓰는 도구를 만들거나 외부 파일·API 연동이 필요한 경우에 해당한다.
정리 — 매크로와 VBA, 한 줄로 기억하는 법
매크로는 ‘레시피’고, VBA는 그 레시피를 쓰는 ‘언어’다. 레시피(매크로)는 구체적인 절차 목록이고, 언어(VBA)를 알아야 레시피를 직접 짜거나 고칠 수 있다.
지금 당장 반복 작업을 줄이고 싶다면, 먼저 내 작업이 기록기 매크로로 해결 가능한지 확인하는 것이 가장 빠른 경로다. 조건이나 동적 범위가 필요한 순간이 오면, 그때 VBA 코드를 한 줄씩 추가하면 된다. 매크로냐 VBA냐를 미리 고민하는 것보다, 기록기를 한 번 돌려 보는 편이 훨씬 실용적이다.
자주 묻는 질문
엑셀 매크로와 VBA는 같은 말인가요?
같은 말이 아닙니다. VBA(Visual Basic for Applications)는 프로그래밍 언어이고, 매크로는 VBA로 작성된 자동화 동작의 묶음입니다. 매크로를 만드는 수단이 VBA인 셈입니다.
VBA를 전혀 몰라도 매크로를 쓸 수 있나요?
네, 가능합니다. 엑셀의 매크로 기록기를 사용하면 코드 작성 없이 동작을 기록해 자동 재생할 수 있습니다. 다만 조건 분기나 동적 범위 처리가 필요한 경우에는 VBA를 직접 작성해야 합니다.
매크로 기록기로 만든 코드와 VBA 직접 작성 코드는 어떻게 다른가요?
기록기로 만든 코드는 고정된 셀 주소와 순차 동작만 담습니다. VBA를 직접 작성하면 변수·조건문·반복문을 활용해 데이터 범위가 달라져도 유연하게 처리하는 로직을 구현할 수 있습니다.
VBA는 엑셀에서만 쓰이나요?
아닙니다. VBA는 마이크로소프트 오피스 전체에서 사용할 수 있는 언어로 워드·아웃룩·액세스·파워포인트에서도 동작합니다. 다만 실무 활용도는 엑셀이 압도적으로 높습니다.
VBA 편집기는 어떻게 여나요?
키보드 단축키 Alt+F11을 누르면 VBA 편집기(Visual Basic Editor)가 열립니다. 또는 [개발 도구] 탭 → [Visual Basic] 버튼을 클릭해도 됩니다. 개발 도구 탭이 보이지 않으면 [파일] → [옵션] → [리본 사용자 지정]에서 '개발 도구'를 체크해야 합니다.