VBA 매크로 — 코드 한 줄 몰라도 반복작업 자동화
반복되는 엑셀 작업을 AI에게 설명해 VBA 매크로 코드를 만들고, 붙여넣기·실행·오류 수정까지 코딩 없이 진행하는 법을 단계별로 다룹니다.
4장까지는 수식과 피벗으로 데이터를 다뤘습니다. 그런데 어떤 일은 수식으로 안 됩니다. "매달 새 시트를 만들고, 제목행을 넣고, 서식을 입히고, 저장하는" 것처럼 여러 동작을 정해진 순서대로 반복하는 일이 그렇죠. 이런 걸 자동으로 해 주는 게 매크로이고, 그 매크로를 이제 코드 지식 없이 ChatGPT로 만듭니다.
매크로가 뭐고, 언제 필요한가
매크로는 "동작을 적어둔 재생 버튼"
매크로는 "이 동작들을 이 순서로 해"라고 미리 적어두고 버튼 하나로 재생하는 기능입니다. 그 적어두는 언어가 VBA(Visual Basic for Applications), 엑셀에 내장된 자동화용 스크립트입니다. 수식이 한 칸의 값을 계산한다면, 매크로는 시트를 만들고 서식을 입히고 저장하는 여러 손동작을 한꺼번에 처리합니다.
예전엔 코드가 벽이었다
한때 VBA는 진입장벽이었습니다. 문법을 배워야 손을 댈 수 있었으니까요. 지금은 그 벽이 없어졌습니다. 하고 싶은 반복을 말로 설명하면 AI가 VBA 코드를 대신 써 줍니다. 코드를 읽지 못해도 실행하고 고칠 수 있습니다.
매크로가 답인 신호
기준은 하나입니다. "매번 똑같은 손동작을 반복하고 있다"면 매크로 후보입니다. 매주 월요일마다 여러 지점 판매 파일을 열어 필요 없는 열을 지우고, 날짜 형식을 통일하고, 합계 행을 붙이고, 다른 이름으로 저장한다고 해 보죠. 손으로 하면 삼사십 분, 클릭 수십 번입니다.
매크로가 과한 경우
반대로 한 번 쓰고 말 작업이라면 매크로는 과합니다. 그럴 땐 2장에서 배운 방식대로 수식이나 정리 프롬프트로 부탁하는 편이 빠릅니다. 매크로는 "같은 일을 앞으로도 계속 반복할 때" 값을 합니다.
VBA 코드를 말로 얻기
요청에 담을 세 가지
코드를 잘 받으려면 세 가지를 또렷이 적습니다. 데이터가 어떻게 생겼는지, 무엇을 만들고 싶은지, 어떤 순서로 동작해야 하는지입니다. 여기에 "붙여넣는 위치도 알려줘"를 덧붙이면 실행 단계에서 덜 헤맵니다.
매크로 생성 프롬프트
매달 초에 할 일이야. 새 시트를 하나 만들고 이름을 그 달로("2026-08" 식으로) 붙인 다음, 1행에 '날짜·항목·금액·비고' 제목을 넣는 VBA 매크로를 짜 줘. 코드랑 어디에 붙여넣는지도 알려줘.
AI가 내놓는 코드
위 요청을 넣으면 AI는 대략 이런 코드를 내놓습니다.
Sub 새달시트()
Dim ws As Worksheet
Set ws = Sheets.Add
ws.Name = Format(Date, "yyyy-mm")
ws.Range("A1:D1").Value = Array("날짜", "항목", "금액", "비고")
End Sub
코드는 전부 이해하지 않아도 된다
코드를 다 해석할 필요는 없습니다. 눈에 익혀 둘 건 딱 하나, ws.Name = ... 줄이 시트 이름을 정하고 Array(...) 부분이 제목행을 넣는다는 정도입니다. 제목을 바꾸고 싶으면 그 부분만 손보거나, 아예 AI에게 "제목에 '담당자'를 추가해줘"라고 다시 부탁하면 됩니다. 프롬프트는 작업만 갈아 끼우면 얼마든지 재활용됩니다.
붙여넣고 실행하는 절차
다섯 걸음으로 정리
받은 코드를 실제로 돌리는 과정은 다섯 걸음입니다.
- 코드 받기 AI에게 반복작업을 설명하고 VBA 코드를 받습니다.
- VBE 열기 엑셀 상단 리본에 개발도구 탭을 켠 뒤(파일 → 옵션 → 리본 사용자 지정에서 '개발 도구' 체크), Alt+F11을 누르면 VBA 편집기(VBE)가 열립니다.
- 모듈에 붙여넣기 편집기에서 삽입 → 모듈로 빈 모듈을 만들고 그 안에 코드를 붙여넣습니다.
- 실행하기 F5나 상단 실행 버튼을 눌러 매크로를 돌립니다.
- 오류 시 그대로 AI에게 오류 창이 뜨면 그 메시지를 복사해 AI에게 붙여 수정 코드를 받습니다.
왜 "모듈 안"이 중요한가
초보가 가장 많이 막히는 지점이 엉뚱한 곳에 코드를 넣는 겁니다. 시트나 통합 문서 항목에 붙이면 실행이 안 되거나 의도와 다르게 돕니다. "삽입 → 모듈"로 만든 빈 모듈 안에 넣는다는 것만 지키면 이 실수는 사라집니다.
반드시 .xlsm으로 저장
매크로가 든 파일을 일반 엑셀(.xlsx)로 저장하면 매크로가 통째로 사라집니다. "매크로 사용 통합 문서(.xlsm)"로 저장해야 다음에 열어도 코드가 그대로 남습니다. 처음 매크로를 만든 사람이 가장 허무하게 겪는 실수라, 저장 형식은 미리 확인해 두세요.
실행 전 반드시 복사본에서
⚠️ 매크로가 바꿔 놓은 결과는 Ctrl+Z로 되돌려지지 않습니다. 수식은 잘못돼도 지우면 그만이지만, 매크로는 수백 행을 한 번에 바꿔 놓고 되돌릴 수 없습니다. 새 매크로는 반드시 원본의 복사본에서, 작은 범위로 먼저 돌려 결과를 확인한 뒤 전체에 적용하세요.
오류를 AI로 고치기
오류는 실패가 아니라 대화의 시작
처음부터 완벽하게 도는 경우는 드뭅니다. 그런데 이게 오히려 AI 매크로의 장점입니다. 오류 메시지를 그대로 AI에게 돌려주면 되니까요. 코드를 읽지 못해도 "무엇이 어디서 멈췄는지"를 AI가 대신 해석합니다.
오류 수정 프롬프트
방금 준 매크로를 실행하니 이런 오류가 났어: "런타임 오류 '1004': 개체 '_Worksheet'의 메서드 'Name'이(가) 실패했습니다". 원인이 뭐고 어떻게 고치면 되는지, 수정한 전체 코드로 알려줘.
메시지를 그대로 붙이는 게 핵심
위 오류는 대개 같은 이름의 시트가 이미 있어서 납니다. AI에게 저 문장을 그대로 붙이면 "이미 있으면 지우고 다시 만들도록" 고친 코드를 내줍니다. 요약하지 말고 오류 창의 문구를 그대로 옮기거나, 오류 창을 캡처해 붙이는 편이 정확합니다. 부분만 고치지 말고 "수정한 전체 코드로" 달라고 해야 붙여넣기가 깔끔합니다.
두세 번이 넘어가면 쪼갠다
"실행 → 오류 붙여넣기 → 수정"을 두세 번 돌리면 대개 완성됩니다. 다만 세 번, 네 번을 돌려도 같은 자리에서 맴돈다면 요청 자체가 애매하거나 작업이 너무 복잡하다는 신호입니다. 그럴 땐 "먼저 이것만 하는 매크로"로 잘게 쪼개 다시 부탁하는 편이 빠릅니다. AI가 준 코드가 무슨 일을 하는지 미덥지 않을 때는, 실행 전에 "이 코드가 각 줄마다 뭘 하는지 설명해줘"로 한 번 확인하는 습관도 도움이 됩니다. 이 검증 감각은 8장에서 따로 정리합니다.
삼사십 분짜리 월요일 아침 일이 버튼 하나로 줄어드는 경험을 한 번 하고 나면, 다른 반복작업도 자꾸 매크로로 넘기게 됩니다.
다음 챕터에서는 여러 파일과 시트에 흩어진 데이터를 하나로 통합하거나, 반대로 기준에 따라 부서별로 분리하는 대량 처리 작업을 AI로 다루는 법을 살펴보겠습니다.
