엑셀 매크로 기록 사용법
반복하는 서식 작업을 매크로로 기록하고, 엑셀이 만든 VBA 코드를 읽고, 상대 참조와 절대 참조를 고르고, 매크로 파일을 안전하게 저장하고 여는 방법을 배워요.
- 난이도
- 고급
- Time
- 13분 분량
- 수정:
- 적용 대상:
- Windows용 Microsoft 365용 Excel, Excel 2024, Excel 2021, Excel 2019

배울 내용
- 반복 작업을 매크로로 만들 가치가 있는지 판단하기
- 매크로를 기록하고, 기록을 중지하고, 실행하기
- 매크로 기록기가 만든 VBA 코드 읽기
- 기록할 때 절대 참조와 상대 참조 중에서 고르기
- 매크로 사용 통합 문서를 저장하고 매크로 파일을 안전하게 열기
예제 파일
엑셀 매크로 기록 사용법.xlsx
이 튜토리얼에서 사용하는 통합 문서를 내려받아 엑셀에서 직접 따라 해 보세요.
엑셀 통합 문서(.xlsx) · 7 KB
매크로는 엑셀에서 한 작업을 녹화해 두었다가 단축키 하나로 다시 재생하는 기능이에요. 프로그래밍을 몰라도 만들 수 있어요. 엑셀이 클릭과 키 입력을 지켜보다가 VBA 코드를 대신 써 주거든요. 정말 필요한 능력은 어떤 작업이 매크로로 만들 만한지 판단하고, 기록된 코드를 읽고, 컴퓨터를 위험에 빠뜨리지 않고 매크로 파일을 저장하고 여는 거예요.
매크로로 기록할 만한 작업은?
다음 조건을 모두 만족할 때 매크로가 제값을 해요.
- 자주 반복하는 작업이에요. 한 번이 아니라 매일, 매주 해요.
- 클릭이 많이 필요해요. 손으로 하면 느리고 조금씩 틀리기 쉬워요.
- 데이터 모양이 매번 같아요. 같은 열이 같은 순서로, 같은 위치에서 시작해요.
- 더 나은 도구가 따로 없어요.
마지막 조건이 중요해요. 반복 작업 중에는 매크로보다 나은 도구가 있는 경우가 많아요.
| 반복 작업 | 더 나은 도구 | 이유 |
|---|---|---|
| 새 행마다 같은 계산을 복사해 넣기 | 엑셀 표 안의 수식 | 표는 새 행에 수식을 알아서 채워요 |
| 매달 같은 내보내기 파일 정리하기 | 파워 쿼리(Power Query) | 새로 고침할 수 있고, 단계 목록이 남고, 매크로 파일이 필요 없어요 |
| 기준을 넘는 값 강조하기 | 조건부 서식(Conditional Formatting) | 값이 바뀌면 같이 업데이트돼요 |
| 보고서에 같은 레이아웃 적용하기 | 매크로 | 여러 서식 단계를 차례로 재생해 주는 기본 기능이 없어요 |
첫 매크로로는 새 내보내기 파일을 받을 때마다 하는 서식 작업이 좋아요. 머리글 행을 굵게 하고, 색을 채우고, 표시 형식을 정하고, 열 너비를 맞추는 일 같은 거예요.
기록 준비하기
기록은 두 곳에서 시작할 수 있어요. 보기 > 매크로는 항상 있어요. 매크로 아래 화살표를 누르면 매크로 기록(Record Macro), 상대 참조로 기록(Use Relative References), 매크로 보기(View Macros)가 나와요. 개발 도구(Developer) 탭에도 같은 명령이 있고 VBA 편집기와 매크로 보안 설정까지 들어 있지만, 기본적으로 숨겨져 있어요. 개발 도구 탭을 표시하는 방법은 다음과 같아요.
리본 옵션을 여세요
파일 then 옵션 then 리본 사용자 지정을 클릭하세요.
개발 도구 탭을 켜세요
오른쪽 목록의 기본 탭 아래에서 개발 도구에 체크하고 확인을 누르세요. 이제 리본에 개발 도구 탭이 보여요.
기록 단추를 누르기 전에 작업을 손으로 한 번 해 보고 순서를 적어 두세요. 기록기는 잘못 클릭한 셀이나 실행 취소한 단계까지 전부 기록해요. 미리 연습하고 기록하면 코드가 깔끔하고 믿을 만해져요.
첫 매크로 기록하기
예시는 매번 머리글 행이 밋밋하게 나오는 매출 내보내기 파일이에요. 매크로로 머리글을 굵게 하고 노란색으로 채울 거예요.
| A | B | C | |
|---|---|---|---|
| 1 | 담당자 | 지역 | 매출 |
| 2 | Ari | 동부 | 18,400 |
| 3 | Bea | 서부 | 21,750 |
| 4 | Cal | 북부 | 16,900 |
기록을 시작하세요
아무 셀이나 클릭한 다음 보기 then 매크로 then 매크로 기록(또는 개발 도구 then 코드 then 매크로 기록)을 클릭하세요. 매크로 기록 대화 상자가 열려요.
매크로 이름과 바로 가기 키를 정하세요
대화 상자를 다음과 같이 채우세요.
- 매크로 이름:
FormatHeader. 이름은 문자로 시작해야 하고 공백을 넣을 수 없어요. - 바로 가기 키: 상자를 클릭하고 Shift+H를 누르세요. 바로 가기 키가 Ctrl+Shift+H가 돼요. 소문자 하나만 쓰면 이 통합 문서가 열려 있는 동안 Ctrl+C 같은 엑셀 기본 단축키를 덮어쓰기 때문에 Shift를 함께 쓰는 게 좋아요.
- 매크로 저장 위치: 현재 통합 문서.
- 설명: "머리글 행을 굵게 하고 노란색으로 채운다"처럼 무슨 일을 하는지 한 줄로 적으세요.
확인을 누르면 바로 기록이 시작돼요.
- 매크로 이름:
작업을 한 번 하세요
A1:C1을 선택하고 Ctrl+B를 누르세요. 그런 다음 홈 then 글꼴에서 채우기 색(Fill Color) 옆 화살표를 누르고 표준 색의 노랑을 고르세요.
기록을 중지하세요
보기 then 매크로 then 기록 중지를 클릭하거나, 상태 표시줄 왼쪽 끝의 작은 사각형 기록 중지(Stop Recording) 단추를 누르세요. 이 단계를 잊으면 기록이 계속되어 그다음에 하는 일이 모두 매크로에 들어가요.
테스트하세요
매크로가 동작하는 모습을 보려면 먼저 서식을 지우세요. A1:C1을 선택하고 홈 then 편집 then 지우기 then 서식 지우기(Clear Formats)를 클릭해요. 그다음 Alt+F8을 눌러 FormatHeader를 고르고 실행을 누르거나, Ctrl+Shift+H를 누르세요.
A B C 1 담당자 지역 매출 2 Ari 동부 18,400 3 Bea 서부 21,750 4 Cal 북부 16,900 FormatHeader를 실행하면 머리글 행이 굵게 바뀌고 색이 채워져요.
기록된 코드 읽기
Alt+F11을 눌러 Visual Basic 편집기를 여세요(Alt+F8 대화 상자에서 매크로를 고르고 편집을 눌러도 돼요). 프로젝트 창에서 통합 문서 아래의 모듈을 펼치고 Module1을 두 번 클릭하세요. 코드는 대략 이렇게 생겼어요.
Sub FormatHeader()
'
' FormatHeader 매크로
' 머리글 행을 굵게 하고 노란색으로 채운다
'
' 바로 가기 키: Ctrl+Shift+H
'
Range("A1:C1").Select
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
VBA를 쓸 줄 몰라도 읽을 수 있어요. 각 부분이 내가 한 일과 순서대로 대응해요.
| 줄 | 의미 |
|---|---|
Sub FormatHeader() … End Sub | 매크로의 시작과 끝이에요. 이름은 내가 입력한 그대로예요. |
'로 시작하는 줄 | 주석이에요. VBA는 무시해요. 기록기가 설명과 바로 가기 키를 여기에 적어 둬요. |
Range("A1:C1").Select | A1:C1을 선택했어요. |
Selection.Font.Bold = True | 선택 영역에서 Ctrl+B를 눌렀어요. |
With Selection.Interior … End With | 채우기 색을 정했어요. .Color = 65535가 노랑이고, 나머지 줄은 기록기가 늘 써 넣는 기본값이에요. |
코드를 읽으면 매크로가 정확히 어디를 건드리는지 알 수 있어요. 여기서 Range("A1:C1")은 매크로를 실행할 때 어느 셀에 있든 항상 A1:C1에 서식을 적용한다는 뜻이에요. 다음 절에서 다룰 차이가 바로 이거예요.
절대 참조와 상대 참조 중 무엇으로 기록할까?
기본적으로 기록기는 절대 참조를 써요. 선택한 셀 주소를 그대로 적어 두고, 매크로는 매번 그 셀에서 동작해요. 위의 내보내기 파일처럼 데이터가 늘 같은 위치에서 시작한다면 이게 맞아요.
하지만 매크로가 지금 있는 위치에서 동작해야 할 때도 있어요. 한 시트에 데이터 블록이 여러 개 있고 블록마다 머리글 행이 있다고 해 볼게요. 어느 머리글이든 첫 셀을 클릭하고 매크로를 실행하면 그 행에 서식이 적용되게 하고 싶어요.
이럴 때는 상대 참조로 기록하세요.
기록 전에 시작 셀을 선택하세요
A1을 클릭하세요. 상대 참조에서는 모든 동작이 활성 셀에서 얼마나 떨어져 있는지로 기록되기 때문에 시작 위치가 중요해요.
상대 참조로 기록을 켜세요
보기 then 매크로 then 상대 참조로 기록(또는 개발 도구 then 코드 then 상대 참조로 기록)을 클릭하세요. 켜져 있는 동안 명령이 강조 표시돼요.
앞에서처럼 기록하세요
이름을
FormatHeaderHere로 정해 기록을 시작하고, A1에서 C1까지 드래그하고, Ctrl+B를 누르고, 채우기 색을 적용한 다음 기록을 중지하세요.
이제 선택하는 줄이 이렇게 바뀌어요.
ActiveCell.Range("A1:C1").Select
ActiveCell.Range("A1:C1")은 시트의 A1:C1 셀이 아니에요. "활성 셀에서 시작하는, 1행 3열 크기의 범위"라는 뜻이에요. 여기서 A1은 활성 셀 자신을 가리켜요. A6을 클릭하고 매크로를 실행하면 A6:C6에 서식이 적용돼요.
| A | B | C | |
|---|---|---|---|
| 1 | 담당자 | 지역 | 매출 |
| 2 | Ari | 동부 | 18,400 |
| 3 | Bea | 서부 | 21,750 |
| 4 | Cal | 북부 | 16,900 |
| 5 | |||
| 6 | 담당자 | 지역 | 매출 |
| 7 | Ari | 동부 | 19,250 |
| 8 | Bea | 서부 | 20,800 |
| 9 | Cal | 북부 | 17,600 |
상대 참조로 기록은 다시 클릭할 때까지 켜진 채로 남아서 다음 기록에도 적용돼요. 기록을 시작할 때마다 상태를 확인하세요.
매크로 사용 통합 문서로 저장하기
일반 .xlsx 통합 문서에는 매크로를 담을 수 없어요. F12를 누르고 파일 형식에서 Excel 매크로 사용 통합 문서(*.xlsm)를 고르세요. Excel 바이너리 통합 문서 형식(.xlsb)도 매크로를 유지해요.
매크로가 있는 통합 문서를 .xlsx로 저장하려고 하면, 엑셀이 매크로 제외 통합 문서에는 VB 프로젝트를 저장할 수 없다고 경고해요. 아니요를 누르고 .xlsm 형식을 고르세요. 예를 누르면 매크로 없이 저장되고, 파일을 닫는 순간 코드가 사라져요.
이 통합 문서뿐 아니라 모든 통합 문서에서 매크로를 쓰고 싶다면 매크로 기록 대화 상자의 매크로 저장 위치를 개인용 매크로 통합 문서(Personal Macro Workbook)로 정하세요. 엑셀은 이 매크로를 엑셀이 시작할 때마다 열리는 숨겨진 파일 PERSONAL.XLSB에 저장해요. 기록한 뒤 엑셀을 닫을 때 개인용 매크로 통합 문서의 변경 내용을 저장할지 물으면 저장을 누르세요.
매크로 파일 안전하게 열기
매크로는 VBA로 할 수 있는 일은 뭐든지 할 수 있어요. 파일을 지우고, 다른 통합 문서를 바꾸고, 데이터를 다른 곳으로 보낼 수도 있죠. 그래서 엑셀은 내가 허용하기 전에는 파일의 매크로를 실행하지 않아요.
- 내가 만들었거나 조직 내부에서 받은 파일을 열면 매크로를 사용할 수 없도록 설정했다는 노란색 보안 경고 표시줄이 나타나요. 파일과 보낸 사람을 신뢰할 때만 콘텐츠 사용(Enable Content)을 누르세요.
- 인터넷에서 내려받았거나 메일 첨부 파일에서 저장한 파일을 열면 빨간색 보안 위험 표시줄이 나타나요. Microsoft가 매크로를 차단했다는 뜻이고, 사용하도록 설정하는 단추가 없어요. 파일이 안전하다고 확신한다면 파일을 닫고, 파일 탐색기에서 파일을 마우스 오른쪽 단추로 클릭해 속성을 고르고, 일반 탭에서 차단 해제(Unblock)에 체크한 뒤 확인을 누르세요.
- 조직마다 설정이 다를 수 있어요. 매크로 설정(Macro Settings)은 파일 then 옵션 then 보안 센터 then 보안 센터 설정 then 매크로 설정에 있어요. IT 팀의 안내가 없다면 기본값을 그대로 두세요. 내 매크로 파일을 자주 두는 폴더는 같은 창의 신뢰할 수 있는 위치(Trusted Locations)에 추가할 수 있어요.
자주 하는 실수
- 연습 없이 기록하기. 쓸데없는 클릭, 스크롤, 실행 취소한 단계가 모두 코드에 남아요. 먼저 연습하고 기록하세요.
- 기록 중지를 잊기. 그 뒤에 한 모든 일이 매크로의 일부가 돼요.
- 늘어나는 데이터에 고정 범위 쓰기.
Range("A1:C1")은 네 번째 열을 포함하지 않아요. 기록할 때 Ctrl+Shift+Arrow 키를 쓰거나 데이터를 엑셀 표로 만드세요. - 상대 참조를 실수로 켜 두거나 꺼 두기. 기록할 때마다 단추 상태를 확인하고, 기록한 뒤에는 선택하는 줄을 읽어 보세요.
Range("…")는 절대 참조,ActiveCell…은 상대 참조예요. - .xlsx로 저장하기. 매크로가 사라져요.
.xlsm을 쓰세요. - 판단이나 반복을 기대하기. 기록기는 정해진 단계를 그대로 재생할 뿐이에요. 값을 확인하거나, 마지막 행까지 반복하거나, 사용자에게 질문할 수 없어요. 그러려면 VBA를 직접 고쳐야 해요.
연습
연습
머리글 서식 매크로 기록하기
- 새 통합 문서에 위의 매출 내보내기 데이터를 입력하세요. A1:C1에 머리글 행, 그 아래에 데이터 세 행이에요.
- A1:C1을 굵게 하고 노란색으로 채우는
FormatHeader매크로를 기록하세요. 바로 가기 키는 Ctrl+Shift+H로 정하세요. - 서식을 지우고 바로 가기 키로 매크로를 실행해 확인하세요.
- VBA 편집기를 열고 머리글을 선택하는 줄과 색을 정하는 줄을 찾으세요.
- 데이터 세 행을 머리글과 함께 A6:C9에 복사하세요(머리글은 A6:C6). 상대 참조로
FormatHeaderHere를 기록한 다음, A6을 클릭하고 실행하세요. - 통합 문서를
.xlsm으로 저장하고, 닫았다가 다시 열어서 두 매크로를 다시 실행해 보세요.
연습
종합 과제: 다른 사람이 새로 고칠 수 있는 고급 통합 문서
다른 고급 튜토리얼을 끝냈다면, 날짜, 지역, 제품, 매출, 원가가 있는 작은 매출 데이터로 통합 문서 하나에 모두 모아 보세요.
- 데이터를 엑셀 표로 만들고 매출 총이익과 이익률을 구하는 계산된 열을 추가하세요.
- 동적 배열 수식으로 지역 목록을 중복 없이 정렬해서 만드세요.
- 월별, 지역별 매출과 매출 총이익을 보여 주는 피벗 테이블을 만들고, 슬라이서와 주요 추세를 보여 주는 피벗 차트를 추가하세요.
- 가정 영역을 만들고 적어도 수식 하나에서 사용하세요.
- 원본의 매출 합계와 피벗 테이블의 매출 합계를 비교하는 검사 셀을 추가하세요.
- Notes 시트에 새로 고침 절차를 적으세요. 원한다면 파워 쿼리로 데이터를 불러와 새로 고침할 때 새 행이 들어오게 해 보세요.
실력 점검
- 반복 작업을 매크로, 수식, 조건부 서식, 파워 쿼리 단계 중 무엇으로 처리할지 판단할 수 있나요?
- 서식 매크로를 기록하고, 중지하고, 바로 가기 키로 실행할 수 있나요?
- VBA 편집기를 열어 기록된 매크로의 각 줄이 어떤 클릭에 해당하는지 말할 수 있나요?
Range("A1:C1")과ActiveCell.Range("A1:C1")이 서로 다른 셀에서 동작하는 이유를 설명할 수 있나요?- 매크로가 있는 통합 문서에 필요한 파일 형식과, 내려받은 파일의 매크로가 차단됐을 때 할 일을 말할 수 있나요?
관련 자료
도움이 되었나요? 틀린 부분을 발견하셨나요? 피드백 보내기 · admin@arumsoft.com