8. AI로 VBA 매크로 생성하고 실행하기

현실 업무 상황부터 떠올려보자
공공기관 실무에서 이런 장면은 아주 흔합니다. 매달 부서별 실적 시트를 같은 형식으로 꾸며야 하고, 여러 시트에 흩어진 데이터를 한 장으로 합쳐야 하며, 담당자가 바뀌어도 같은 작업을 반복해야 합니다. 한 번은 5분짜리 일이지만, 그 5분이 30번 쌓이면 금방 반나절이 됩니다.
이때 많은 사람이 "엑셀 매크로를 쓰면 된다더라"는 말은 들었지만, 코드 창을 보는 순간 손이 멈춥니다. 바로 여기서 AI가 힘을 발휘합니다. 이제는 VBA 문법을 처음부터 외우지 않아도 됩니다. 내가 원하는 업무를 한국어로 설명하면, AI가 초안을 만들고 우리는 그것을 복사해 실행하면 됩니다.
이 장의 목표는 단순합니다. 코드를 몰라도 반복 서식 작업, 데이터 통합, 버튼 자동화를 직접 해보는 것입니다.
왜 공공기관 실무에서 VBA가 다시 중요해졌을까
VBA는 엑셀 안에서 반복 작업을 자동화하는 기본 언어입니다.1 특히 공공기관처럼 엑셀 기반 보고, 취합, 검토 업무가 많은 환경에서는 아직도 매우 실용적입니다. 인터넷이 항상 자유롭지 않거나, 외부 시스템 연동이 제한된 환경에서도 엑셀 자체만으로 자동화를 만들 수 있기 때문입니다.2
더 중요한 점은 보안입니다. 데이터를 외부 AI에 직접 올리기 어려운 상황에서도, 업무 데이터는 PC 안에 두고 AI에게는 "어떤 작업을 할지"만 설명해 VBA 코드를 받는 방식을 쓰면 훨씬 현실적으로 자동화를 시작할 수 있습니다.3
한마디로 정리하면 이렇습니다. 함수 자동화가 "셀 단위 일을 빠르게 하는 기술"이라면, VBA는 "작업 순서 자체를 버튼 하나로 줄이는 기술"입니다.
핵심 개념을 아주 쉽게 정리하면
매크로는 엑셀에게 시키는 "작업 묶음"입니다. 예를 들어 헤더를 굵게 만들고, 열 너비를 맞추고, 빈 행을 지우고, 파일을 저장하는 일을 한 번에 실행하도록 저장해두면 그것이 매크로입니다.
VBA는 그 매크로를 적는 언어입니다. 겉으로 보면 어렵지만, 지금 우리에게 더 중요한 것은 문법이 아니라 업무를 정확히 설명하는 능력입니다.
AI는 여기서 번역기 역할을 합니다. 사람이 "A열 날짜 형식을 yyyy-mm-dd로 바꾸고, 1행은 굵게, 전체 열 너비는 자동 맞춤해줘"라고 말하면, AI가 그 설명을 VBA 코드로 바꿔줍니다. 시트명, 열 위치, 시작 행, 예외 조건을 구체적으로 말할수록 원하는 코드가 더 잘 나옵니다.4
그리고 꼭 기억할 점이 하나 있습니다. AI가 만든 코드는 편리하지만, 무조건 정답은 아닙니다. 실행 전에는 코드를 훑어보고, 원본이 아닌 복사본 파일에서 먼저 테스트해야 합니다.5
실습 전에 딱 5분 준비
실습을 시작하기 전에 엑셀에서 한 번만 설정하면 됩니다.
먼저 엑셀 상단에서 개발 도구 탭이 보이지 않으면, 파일 → 옵션 → 리본 사용자 지정으로 들어가 개발 도구를 체크합니다.
그다음 파일을 매크로 사용 통합 문서(.xlsm) 형식으로 저장합니다. VBA 코드는 일반 .xlsx 파일에 저장되지 않기 때문입니다.2
이제 Alt + F11을 누르면 VBA 편집기가 열립니다. 여기서 삽입 → 모듈을 누르면 코드를 붙여넣을 빈 공간이 생깁니다.2
처음이라면 아래 테스트 코드부터 붙여넣고 실행해보세요.
Sub HelloPublicAI()
MsgBox "매크로 실행 준비 완료!"
End Sub실행했을 때 메시지 창이 뜨면 준비가 끝난 것입니다.
실습 1. 반복 서식 작업을 AI로 10초 만에 만들기
실습 상황
감사자료나 주간 보고서를 받을 때, 시트마다 서식이 제각각인 경우가 많습니다. 제목 줄은 굵게, 날짜는 같은 형식, 열 너비는 자동 조정, 표는 테두리 적용처럼 늘 비슷한 작업을 반복하게 됩니다.
목표
AI에게 요청해서, 현재 시트의 보고서 서식을 한 번에 정리하는 VBA 매크로를 만든다.
STEP BY STEP 실행
새 엑셀 파일을 열고 아무 표나 하나 만듭니다. 예를 들어 A1:D10 범위에
부서,담당자,기준일,금액데이터를 넣습니다.아래 프롬프트를 AI에게 그대로 붙여넣습니다.
너는 엑셀 VBA 작성 도우미야.
목표:
현재 활성 시트의 보고서 서식을 자동으로 정리하는 VBA 코드를 작성해줘.
조건:
- 1행은 제목 행으로 보고 굵게, 배경색 연한 회색 적용
- 전체 데이터 범위에 테두리 적용
- 모든 열 너비 자동 맞춤
- C열은 날짜 형식을 yyyy-mm-dd로 적용
- D열은 천 단위 구분기호가 있는 숫자 형식 적용
- 빈 시트면 안내 메시지를 띄우고 종료
- 초보자가 보기 쉽게 한글 주석 포함
- 매크로 이름은 Format_ReportAI가 준 코드를 복사합니다.
엑셀에서
Alt + F11을 누른 뒤삽입 → 모듈을 클릭합니다.모듈 창에 코드를 붙여넣습니다.
F5를 눌러 실행하거나, 엑셀로 돌아가개발 도구 → 매크로에서Format_Report를 실행합니다.
결과 예시
실행이 끝나면 1행은 제목처럼 정리되고, 날짜와 금액 형식이 통일되며, 표가 한눈에 읽기 쉬워집니다. 사람이 손으로 하면 2~3분 걸리는 작업이 버튼 한 번으로 끝납니다.
참고용 VBA 결과 예시
아래는 AI가 줄 법한 코드의 예시입니다.
Sub Format_Report()
Dim ws As Worksheet
Dim lastRow As Long
Dim lastCol As Long
Dim rng As Range
Set ws = ActiveSheet
If WorksheetFunction.CountA(ws.Cells) = 0 Then
MsgBox "시트에 데이터가 없습니다."
Exit Sub
End If
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))
With ws.Rows(1)
.Font.Bold = True
.Interior.Color = RGB(220, 220, 220)
End With
rng.Borders.LineStyle = xlContinuous
ws.Columns.AutoFit
ws.Columns("C").NumberFormat = "yyyy-mm-dd"
ws.Columns("D").NumberFormat = "#,##0"
MsgBox "보고서 서식 정리가 완료되었습니다."
End Sub한 번 더 응용하기
같은 작업을 조금 바꿔보고 싶다면 프롬프트만 바꾸면 됩니다. 예를 들어 A열이 공란인 행은 연한 빨간색으로 표시, B열 값이 '완료'면 녹색, 인쇄영역을 A1:F30으로 설정처럼 업무 규칙을 더 넣을 수 있습니다.
실습 2. 여러 시트의 데이터를 한 장으로 통합하기
실습 상황
기관 내부에서 부서별로 동일한 양식의 시트를 작성해 보내면, 마지막에는 누군가가 그것을 하나로 합쳐야 합니다. 복사 붙여넣기를 반복하다 보면 누락, 중복, 헤더 중복이 자주 생깁니다.
목표
같은 통합문서 안에 있는 여러 시트의 데이터를 통합 시트로 자동으로 모으는 VBA 코드를 AI로 생성한다.
STEP BY STEP 실행
새 엑셀 파일에
총무팀,기획팀,행정팀처럼 시트를 3개 만듭니다.각 시트의 A1:D5 정도에 같은 구조의 데이터를 넣습니다. 예를 들어
일자,업무명,담당자,건수형식이면 좋습니다.통합이라는 이름의 빈 시트를 하나 추가합니다.아래 프롬프트를 AI에게 붙여넣습니다.
엑셀 VBA 코드를 작성해줘.
목표:
현재 통합문서 안의 여러 시트 데이터를 '통합' 시트로 모으고 싶어.
조건:
- '통합' 시트를 제외한 모든 시트를 대상으로 할 것
- 각 시트의 1행은 헤더이고, 헤더는 한 번만 복사할 것
- 2행부터 마지막 데이터 행까지 통합 시트 아래로 차례대로 붙여넣을 것
- 마지막 열에는 원본 시트명을 '소속시트'라는 헤더로 추가할 것
- 빈 행은 제외할 것
- 실행 전에 통합 시트의 기존 내용은 지울 것
- 오류가 나면 메시지로 알려줄 것
- 초보자가 이해할 수 있도록 한글 주석 포함
- 매크로 이름은 Combine_Department_Sheets생성된 코드를 VBA 편집기 모듈에 붙여넣고 실행합니다.
결과 예시
통합 시트에 모든 부서 데이터가 한 번에 모입니다. 맨 마지막 열에는 총무팀, 기획팀, 행정팀처럼 출처가 남아 있어서 나중에 검토하기도 쉽습니다.
참고용 VBA 결과 예시
Sub Combine_Department_Sheets()
Dim ws As Worksheet
Dim masterWs As Worksheet
Dim lastRow As Long
Dim lastCol As Long
Dim pasteRow As Long
Dim dataRange As Range
On Error GoTo ErrHandler
Set masterWs = ThisWorkbook.Sheets("통합")
masterWs.Cells.Clear
pasteRow = 1
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "통합" Then
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
If lastRow >= 2 Then
If pasteRow = 1 Then
ws.Range(ws.Cells(1, 1), ws.Cells(1, lastCol)).Copy masterWs.Cells(1, 1)
masterWs.Cells(1, lastCol + 1).Value = "소속시트"
pasteRow = 2
End If
Set dataRange = ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol))
dataRange.Copy masterWs.Cells(pasteRow, 1)
masterWs.Range(masterWs.Cells(pasteRow, lastCol + 1), masterWs.Cells(pasteRow + dataRange.Rows.Count - 1, lastCol + 1)).Value = ws.Name
pasteRow = pasteRow + dataRange.Rows.Count
End If
End If
Next ws
masterWs.Columns.AutoFit
MsgBox "시트 통합이 완료되었습니다."
Exit Sub
ErrHandler:
MsgBox "통합 중 오류가 발생했습니다: " & Err.Description
End Sub프롬프트를 더 잘 쓰는 방법
이 실습에서 가장 중요한 것은 "통합해줘"가 아니라 어떻게 통합할지를 말하는 것입니다. 예를 들어 아래 요소를 같이 적으면 성공률이 높아집니다.
대상 시트 이름 또는 제외 시트 이름
헤더 위치와 데이터 시작 행
어느 열까지 복사할지
빈 행, 숨김 행, 합계 행 처리 방식
결과를 붙여넣을 시트 이름
AI는 마음을 읽지 못합니다. 대신 구체적인 지시에는 꽤 충실합니다.
실습 3. 버튼 하나로 서식 정리와 통합을 한 번에 실행하기
실습 상황
매번 매크로 목록을 열어 실행하는 것도 귀찮을 수 있습니다. 실무에서는 "누가 눌러도 되는 버튼"이 있어야 진짜 자동화가 됩니다.
목표
서식 정리 매크로와 통합 매크로를 한 번에 실행하는 원클릭 버튼을 만든다.
STEP BY STEP 실행
이미 만든
Format_Report,Combine_Department_Sheets매크로가 있다고 가정합니다.아래 프롬프트를 AI에게 입력합니다.
아래 두 개의 매크로를 순서대로 실행하는 VBA 코드를 작성해줘.
실행 순서:
1. Format_Report
2. Combine_Department_Sheets
조건:
- 시작 전에 사용자에게 실행 여부를 묻는 확인창 표시
- 실행 완료 후 완료 메시지 표시
- 오류가 나면 어느 단계에서 오류가 났는지 알려줄 것
- 매크로 이름은 Run_All_ProcessAI가 준 코드를 모듈에 붙여넣습니다.
엑셀 시트로 돌아와
삽입 → 도형에서 사각형 하나를 그립니다.도형 안에
업무 자동 실행이라고 씁니다.도형을 마우스 오른쪽 버튼으로 클릭한 뒤
매크로 지정을 눌러Run_All_Process를 연결합니다.이제 그 버튼을 누르면 자동화가 시작됩니다.
참고용 VBA 결과 예시
Sub Run_All_Process()
On Error GoTo ErrHandler
If MsgBox("서식 정리와 데이터 통합을 실행할까요?", vbYesNo + vbQuestion) = vbNo Then
Exit Sub
End If
Call Format_Report
Call Combine_Department_Sheets
MsgBox "전체 작업이 완료되었습니다."
Exit Sub
ErrHandler:
MsgBox "자동 실행 중 오류가 발생했습니다: " & Err.Description
End Sub결과 예시
이제 사용자는 VBA 편집기를 열 필요가 없습니다. 시트 위의 버튼만 누르면 됩니다. 실무에서 자동화가 자리 잡는 순간은 보통 여기입니다. 내가 쓰는 것에서 끝나지 않고, 팀이 함께 쓸 수 있는 도구가 되는 순간입니다.
실습 4. AI에게 오류 수정까지 맡기기
실습 상황
처음 만든 매크로는 한 번에 완벽하게 동작하지 않을 수 있습니다. 시트명이 다르거나, 열 위치가 다르거나, 빈 데이터가 있으면 오류가 납니다. 이때 포기하지 말고, 오류를 다시 AI에게 설명하면 됩니다.
목표
VBA 오류 메시지와 코드를 AI에 전달해 수정본을 받는다.
STEP BY STEP 실행
매크로 실행 중 오류가 뜨면 메시지를 그대로 적어둡니다. 예를 들어
Run-time error '9': Subscript out of range같은 형태입니다.오류가 난 줄이 표시되면 그 부분도 함께 복사합니다.
아래 프롬프트를 AI에게 붙여넣습니다.
아래 VBA 코드 실행 중 오류가 발생했어.
초보자도 이해할 수 있게 원인과 수정 코드를 알려줘.
오류 메시지:
Run-time error '9': Subscript out of range
실행 환경:
- 통합 시트 이름은 '통합데이터'로 되어 있음
- 원래 코드에서는 '통합' 시트를 찾고 있음
현재 코드:
[여기에 전체 VBA 코드 붙여넣기]
요청:
- 오류 원인을 한 문단으로 설명
- 수정된 전체 코드를 다시 작성
- 바뀐 부분을 3줄 요약수정된 코드를 다시 붙여넣고 재실행합니다.
결과 예시
AI는 대체로 시트 이름이 실제와 다르다, 빈 시트를 만나 마지막 행 계산이 꼬였다, 범위가 고정이라 데이터가 넘쳤다 같은 원인을 설명해줍니다. 이 과정을 두세 번만 겪어도, VBA 문법을 몰라도 "왜 안 되는지"를 읽는 눈이 생깁니다.
실무에서 바로 쓰는 프롬프트 템플릿
아래 템플릿은 거의 모든 VBA 요청에 응용할 수 있습니다.
너는 공공기관 실무용 엑셀 VBA 작성 도우미야.
목표:
[무엇을 자동화할지 한 문장으로 작성]
실행 환경:
- 엑셀 버전: [예: Microsoft 365]
- 파일 구조: [예: 같은 통합문서 안에 부서별 시트 12개]
- 대상 시트: [예: 원본, 통합, 결과]
세부 조건:
- 데이터 시작 행: [예: 2행]
- 주요 열: [예: A열 일자, B열 담당자, C열 건수]
- 예외 처리: [예: 빈 행 제외, 헤더는 한 번만 복사]
- 출력 위치: [예: 통합 시트 A1부터]
- 추가 요구: [예: 한글 주석, 오류 메시지, 버튼 연결용 매크로명]
출력 형식:
- 바로 실행 가능한 전체 VBA 코드
- 코드 설명 5줄 이내
- 초보자가 수정해야 할 항목만 따로 표시이 템플릿의 장점은, 내가 해야 할 일을 자연어로 정리하면서 동시에 AI가 빠뜨리기 쉬운 조건도 함께 전달할 수 있다는 점입니다.
자주 하는 실수와 바로잡는 방법
처음 VBA를 쓸 때는 기술보다 습관이 더 중요합니다.
첫째, .xlsx로 저장해놓고 왜 코드가 사라졌는지 놀라는 경우가 많습니다. 매크로가 들어간 파일은 반드시 .xlsm으로 저장하세요.2
둘째, 원본 파일에서 바로 실행하는 경우가 많습니다. 자동화는 편하지만, 실수도 순식간입니다. 꼭 복사본에서 먼저 돌려보세요.5
셋째, 프롬프트가 너무 짧은 경우가 많습니다. "데이터 합쳐줘"보다 "통합 시트를 제외한 모든 시트의 2행부터 마지막 행까지를 헤더 1회만 복사해 통합 시트에 붙여넣고 마지막 열에 원본 시트명을 남겨줘"가 훨씬 좋습니다.4
넷째, 한 번에 너무 큰 기능을 만들려다 막히기도 합니다. 그럴 때는 서식 정리 → 시트 통합 → 버튼 연결처럼 나누어 요청하세요. AI와 VBA는 작게 만들고, 붙여가며 키우는 방식이 가장 잘 맞습니다.
마무리
VBA를 잘한다는 것은 코드를 외운다는 뜻이 아닙니다. 이제는 반복 업무를 순서로 쪼개고, 그 순서를 AI에게 정확히 설명할 수 있다는 뜻에 더 가깝습니다.
이 장에서 만든 세 가지를 다시 떠올려보세요. 반복 서식 정리, 여러 시트 통합, 버튼 자동화. 이 세 가지만 익혀도 엑셀 업무의 체감 난이도가 확 떨어집니다.
그리고 정말 중요한 변화는 여기서 시작됩니다. 전에는 "이건 손으로 해야지"라고 넘겼던 일을, 이제는 "이건 버튼으로 만들 수 있겠는데?"라고 보게 됩니다. 그 시선이 생기면 반복 업무가 줄기 시작합니다.
다음 장에서는 VBA만이 아니라 Power Query, Copilot, 외부 AI 도구까지 시야를 넓혀서, 엑셀 자동화를 더 크게 설계해보겠습니다.
참고
1AI VBA 생성기 - 설명을 Excel VBA 코드로 변환하는 AI
2Generate Professional VBA Code in Seconds
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.
