엑셀 매크로 만들기, 2시간짜리 작업을 10초로 줄인 VBA 레시피 4가지
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
매크로 녹화부터 VBA 레시피 4종 + AI 코드 생성까지
2026년 04월 15일 발행
엑셀 매크로 하나로 반복 작업 시간이 크게 줄어듭니다
이 글의 핵심 - 매크로 녹화 5단계만 따라가면 코딩 없이 첫 매크로를 만들 수 있습니다 - 경리·영업·인사·기획 직종별로 수정해서 쓸 수 있는 VBA 코드 4종을 제공합니다 - ChatGPT에 작업을 구체적으로 설명하면 맞춤 VBA 코드 초안을 받을 수 있습니다
엑셀 매크로 만들기는 코딩을 모르는 직장인도 5단계 녹화로 시작할 수 있습니다. 이 글에서 직종별 VBA 코드 4종을 업무 파일 구조에 맞게 수정하면 반복 업무 자동화의 첫 단계를 오늘 바로 시작할 수 있습니다. 더 복잡한 작업은 ChatGPT에 작업 조건을 설명해서 코드 초안을 받은 뒤, 복사본 파일에서 테스트하는 방식으로 접근하면 좋습니다.
매달 말 5개 지점의 매출 시트를 일일이 복사·붙여넣기하던 경리 담당자의 업무를 떠올려보겠습니다. 그 작업에 매번 2~3시간이 걸렸다면, 시트 구조가 일정한 경우 매크로 버튼 클릭 한 번으로 몇 초 안에 합치는 흐름을 만들 수 있습니다. JETIR 연구(2025)에 따르면 반복 작업 자동화로 시간이 70~90% 절감될 수 있으며, 수동 데이터 입력의 오류율이 0.55~3.6%인 점까지 감안하면 매크로는 속도와 정확도를 함께 개선하는 도구입니다.
"자동화하고 싶은데 코딩을 몰라서"라는 장벽은 생각보다 낮습니다. 매크로 녹화 5단계, 직종별 VBA 코드 레시피 4종, ChatGPT 프롬프트 활용법까지 순서대로 보시면 됩니다.
엑셀 매크로와 VBA, 무엇이 다르고 어떻게 함께 쓰나요?
매크로는 반복 작업을 기록·재생하는 기능이고, VBA는 그 기록을 정밀하게 제어하는 프로그래밍 언어입니다. 매크로 녹화로 코드 초안을 자동 생성하고 VBA 편집기에서 필요한 부분을 수정하면, 코딩 지식이 많지 않아도 실무 자동화를 시작할 수 있습니다.
| 구분 | 매크로 녹화 | VBA 코드 |
|---|---|---|
| 방식 | 동작 녹화 후 그대로 재생 | 코드로 직접 제어 |
| 난이도 | 클릭만 할 줄 알면 시작 가능 | 기초 문법 이해 필요 |
| 한계 | 복잡한 조건 분기, 반복 처리에 약함 | 조건·반복·오류 처리 가능 |
| 활용 경로 | 시작점 | 확장점 |
핵심은 이 둘을 따로 떼어 배울 필요가 없다는 점입니다. 매크로 녹화로 코드 초안을 자동 생성하고, VBA 편집기에서 범위·시트명·조건만 수정하면 많은 실무 자동화가 가능합니다. 30분짜리 데이터 정리가 5초 클릭으로 끝나는 이유도 이 흐름에 있습니다.
매크로 녹화로 시작하는 엑셀 자동화 5단계, 처음부터 어떻게 하나요?
개발도구 탭 활성화 → 매크로 기록 시작 → 작업 수행 → 참조 방식 확인 → .xlsm 저장의 5단계로 첫 매크로를 완성할 수 있습니다. 가장 흔한 실패 원인은 절대 참조와 상대 참조의 차이를 모르고 녹화하는 것입니다. 상대 참조는 같은 구조의 표에서 시작 위치만 달라질 때 유리하지만, 데이터 범위를 자동으로 찾아주는 기능은 아니므로 작업 구조를 먼저 확인해야 합니다.
개발도구 탭 활성화부터 저장까지, 5단계만 따라가면 첫 매크로를 만들 수 있습니다.
매크로 녹화 5단계 — 개발도구 활성화부터 .xlsm 저장까지
1단계: 개발도구 탭 활성화
엑셀을 열었는데 '개발도구' 탭이 보이지 않아도 정상입니다. 기본 설정에서는 숨겨져 있습니다.
파일 → 옵션 → 리본 사용자 지정 → '개발 도구' 체크 → 확인 순서로 설정합니다.
이 한 번의 설정으로 매크로 녹화, VBA 편집기, 매크로 버튼 기능을 사용할 수 있습니다.
2단계: 매크로 기록 시작
개발도구 탭에서 '매크로 기록'을 클릭합니다. 매크로 이름을 지정하고, 필요하면 단축키도 설정합니다. 매크로 이름은 한글도 가능하지만 공백은 넣지 않는 편이 안전합니다. 확인을 누르면 이 순간부터 엑셀에서 수행하는 동작이 VBA 코드로 자동 기록됩니다.
3단계: 실제 작업 수행
평소 반복하던 작업을 그대로 수행합니다. 셀 선택, 복사, 붙여넣기, 서식 변경 같은 동작이 기록됩니다. 다만 녹화 중 실수한 클릭이나 불필요한 이동도 코드에 들어갈 수 있으므로, 처음에는 짧은 작업부터 녹화하는 편이 좋습니다.
4단계: 절대 참조 vs 상대 참조 — 가장 흔한 실패 원인
매크로 녹화의 기본값은 보통 절대 참조입니다. A1 셀에서 녹화하면 다음에 실행해도 A1을 기준으로 동작합니다. A파일에서 녹화한 매크로를 B파일에 실행했더니 엉뚱한 셀에 서식이 적용되거나 데이터가 덮어써지는 일이 생길 수 있습니다.
상대 참조 사용은 시작 셀을 기준으로 같은 이동 패턴을 반복할 때 유용합니다. 예를 들어 매번 표의 왼쪽 위 셀에서 시작하고, 표 구조가 동일하다면 상대 참조가 도움이 됩니다. 하지만 상대 참조가 데이터의 끝 행이나 빈 행을 자동으로 판단해주는 것은 아닙니다. 데이터 범위가 매번 달라지는 업무라면 VBA 코드에서 마지막 행을 찾는 방식으로 보완해야 합니다.
녹화 전에 개발도구 탭의 '상대 참조 사용' 버튼을 켤지, 끌지 먼저 결정하세요. 같은 위치에서만 실행할 매크로라면 절대 참조가 편하고, 같은 구조의 표에서 시작 위치만 달라지는 작업이라면 상대 참조가 유리합니다.
5단계: .xlsm 저장 + 보안 경고 이해
매크로가 포함된 파일은 반드시 .xlsm 형식, 즉 매크로 사용 통합 문서로 저장해야 합니다. 일반 .xlsx로 저장하면 매크로 코드가 보존되지 않습니다.
보안 경고는 파일의 출처에 따라 다르게 이해해야 합니다.
| 파일 유형 | 처리 방법 |
|---|---|
| 내가 직접 만든 매크로 파일 | .xlsm으로 저장한 뒤 신뢰할 수 있는 폴더에서 사용합니다 |
| 회사 내부에서 받은 검증된 파일 | 발신자와 내용을 확인한 뒤 회사 보안 정책에 따라 실행합니다 |
| 인터넷에서 다운로드한 매크로 파일 | Microsoft 정책상 기본 차단될 수 있으며, 출처가 불명확하면 실행하지 않는 편이 안전합니다 |
| 자주 쓰는 내부 업무 파일 | 파일 → 옵션 → 보안 센터 → 신뢰할 수 있는 위치에 업무 폴더를 등록할 수 있습니다 |
Microsoft는 인터넷에서 받은 Office 파일의 매크로를 기본 차단할 수 있습니다. 따라서 "콘텐츠 사용" 버튼이 보인다고 해서 무조건 누르면 안 됩니다. 직접 만든 파일이나 신뢰할 수 있는 내부 파일인지 확인한 뒤 실행해야 합니다.
직종별 엑셀 VBA 코드 레시피 4종 — 복사해서 테스트해보세요
Salesforce 조사(2022)에 따르면 업무 자동화를 활용하는 직원의 74%가 더 빠르게 일한다고 응답했습니다. 아래 코드는 VBA 편집기에서 바로 테스트할 수 있는 초안입니다. 다만 실제 업무 파일에 적용하기 전에는 반드시 파일을 복사해 백업하고, 복사본에서 먼저 실행해야 합니다.
실행 전 체크리스트입니다.
- 원본 파일을 복사해 테스트용 파일을 만듭니다
- 시트명, 데이터 시작 행, 마지막 열 위치를 확인합니다
- 빈 시트나 머리글만 있는 시트가 섞여 있는지 확인합니다
- 기존 결과 시트가 있을 때 삭제할지, 덮어쓸지 정합니다
- 회사 보안 정책상 매크로 사용이 허용되는 파일인지 확인합니다
경리/영업관리 — 여러 시트 한 번에 합치기
매월 5개 지점 시트를 일일이 복사·붙여넣기해서 합계를 내던 작업을 버튼 클릭 한 번으로 줄이는 코드입니다. 기존에 합치기 시트가 있으면 삭제 후 새로 만들고, 빈 데이터 시트는 건너뛰도록 구성했습니다.
Public Sub 여러시트합치기()
Dim ws As Worksheet
Dim resultWs As Worksheet
Dim lastRow As Long
Dim lastCol As Long
Dim pasteRow As Long
Dim headerCopied As Boolean
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Worksheets("합치기").Delete
On Error GoTo 0
Application.DisplayAlerts = True
Set resultWs = Worksheets.Add(Before:=Worksheets(1))
resultWs.Name = "합치기"
pasteRow = 1
headerCopied = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> resultWs.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 And lastCol >= 1 Then
If headerCopied = False Then
ws.Range(ws.Cells(1, 1), ws.Cells(1, lastCol)).Copy resultWs.Cells(pasteRow, 1)
pasteRow = pasteRow + 1
headerCopied = True
End If
ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol)).Copy resultWs.Cells(pasteRow, 1)
pasteRow = resultWs.Cells(resultWs.Rows.Count, 1).End(xlUp).Row + 1
End If
End If
Next ws
Application.ScreenUpdating = True
MsgBox "시트 합치기가 완료되었습니다."
End Sub
수정 포인트: 데이터가 A열이 아닌 다른 열부터 시작한다면 Cells(..., 1)의 숫자 1을 실제 시작 열 번호로 바꿔야 합니다. 머리글이 1행이 아니라면 Cells(1, ...), Range(..., 1) 부분도 함께 조정해야 합니다.
영업/인사 — 날짜 서식 일괄 통일
CRM이나 인사 시스템에서 내려받은 날짜가 YYYYMMDD, MM/DD/YYYY, 실제 날짜값으로 섞여 있을 때 사용할 수 있는 코드입니다. 수동 통일에 30분 걸리던 작업을 몇 초 안에 처리할 수 있습니다.
Sub 날짜서식통일()
Dim cell As Range
Dim rawValue As String
For Each cell In Range("A2:A1000")
If Trim(cell.Value) <> "" Then
rawValue = Trim(CStr(cell.Value))
If Len(rawValue) = 8 And IsNumeric(rawValue) Then
cell.Value = DateSerial(Left(rawValue, 4), Mid(rawValue, 5, 2), Right(rawValue, 2))
cell.NumberFormat = "yyyy-mm-dd"
ElseIf IsDate(cell.Value) Then
cell.Value = CDate(cell.Value)
cell.NumberFormat = "yyyy-mm-dd"
End If
End If
Next cell
MsgBox "날짜 서식 통일이 완료되었습니다."
End Sub
수정 포인트: Range("A2:A1000")을 실제 날짜 데이터 범위로 변경합니다. 날짜처럼 보이지만 텍스트가 섞인 데이터는 원본 형식을 먼저 확인해야 합니다.
영업관리/재무 — 목표 달성 셀 색상 자동 강조
매출 100만원 이상 행을 매주 수동으로 색칠하던 작업을 버튼 클릭으로 자동 처리하는 코드입니다.
Sub 조건부색상변경()
Dim cell As Range
For Each cell In Range("B2:B100")
If IsNumeric(cell.Value) Then
If cell.Value >= 1000000 Then
cell.Interior.Color = RGB(255, 199, 206)
Else
cell.Interior.Pattern = xlNone
End If
End If
Next cell
MsgBox "목표 달성 셀 표시가 완료되었습니다."
End Sub
수정 포인트: 1000000은 기준 금액입니다. Range("B2:B100")은 실제 매출 데이터 위치에 맞게 변경합니다. 행 전체를 색칠하고 싶다면 cell.EntireRow.Interior.Color = RGB(255, 199, 206) 형태로 바꿀 수 있습니다.
기획/경리 — 보고서 날짜 자동 입력 + 합계 계산
매일 보고서 작성일을 수기 입력하고, 합계 수식을 다시 작성하는 일을 버튼 클릭으로 자동화하는 코드입니다.
Sub 보고서자동완성()
Range("A1").Value = "보고서 작성일: " & Format(Date, "yyyy년 mm월 dd일")
Range("B101").Formula = "=SUM(B2:B100)"
Range("C101").Formula = "=SUM(C2:C100)"
MsgBox "보고서 자동 완성이 완료되었습니다."
End Sub
수정 포인트: Range("B101"), Range("C101")은 실제 합계 위치로 변경합니다. 데이터가 100행을 넘는다면 B2:B100, C2:C100 범위도 함께 조정해야 합니다.
ChatGPT에 물어보면 나만의 VBA 코드를 바로 받을 수 있나요?
VBA 문법을 몰라도 괜찮습니다. "엑셀에서 [작업 설명]. [데이터 위치/범위]. [예외 조건]. VBA 코드로 만들어줘." 형태로 ChatGPT에 요청하면 복사해서 테스트할 수 있는 코드 초안을 받을 수 있습니다. 받은 코드는 Alt+F11 → 삽입 → 모듈에 붙여넣고, 반드시 복사본 파일에서 먼저 실행해야 합니다.
VBA 문법을 전부 외울 필요는 없습니다. ChatGPT에 작업을 설명하면 복사해 테스트할 수 있는 코드를 받을 수 있습니다. 다만 AI가 만든 코드는 파일 구조를 실제로 보지 못한 상태에서 작성되는 경우가 많으므로, 시트명·열 위치·빈 값 처리·기존 시트 처리 조건을 프롬프트에 구체적으로 적어야 합니다.
프롬프트 공식:
"엑셀에서 [작업 설명]. [데이터 위치/범위]. [예외 조건]. [결과를 어디에 만들지]. VBA 코드로 만들어줘."
예시입니다.
"엑셀에서 A열의 날짜가 YYYYMMDD 형식과 MM/DD/YYYY 형식이 섞여 있어요. A2:A500 범위를 모두 YYYY-MM-DD 형식으로 통일하고 싶어요. 빈 셀은 건너뛰고, 날짜로 변환할 수 없는 값은 노란색으로 표시하는 VBA 코드로 만들어주세요."
받은 코드는 Alt+F11 → 삽입 → 모듈에 붙여넣고 실행합니다. 처음부터 원본 파일에서 실행하지 말고, 복사본에서 결과를 확인한 뒤 적용하는 것이 안전합니다.
Leila Gharani의 XelPlus 자료에서도 VBA는 Excel 버튼 실행, 이벤트 기반 자동화, 반복 업무 처리에 여전히 유용한 도구로 다뤄집니다. Python in Excel과 Office Scripts가 확산되고 있지만, Excel UI 직접 제어·매크로 버튼·이벤트 기반 자동화는 여전히 VBA가 실무적으로 강한 영역입니다.
매크로 버튼과 한계 — 어떤 환경에서 VBA 매크로가 작동하지 않나요?
Excel Online, 즉 웹용 Excel과 모바일 앱에서는 VBA 매크로를 만들거나 실행하거나 편집할 수 없습니다. 클라우드 협업 환경이 주 업무라면 Office Scripts나 Power Automate가 대안입니다. Mac용 Excel에서도 일부 VBA 명령이 Windows와 다르게 동작할 수 있으므로, 사내 표준 자동화 파일은 데스크톱 Windows Excel에서 먼저 검증하는 편이 안정적입니다.
매크로를 만들었으면 매번 Alt+F11을 열 필요 없이, 시트 위에 버튼을 배치해 클릭 한 번으로 실행할 수 있습니다.
개발도구 → 삽입 → 양식 컨트롤(버튼) → 시트에 드래그 → 매크로 지정 순서로 설정합니다.
알아둘 한계는 3가지입니다.
-
Excel Online과 모바일 앱에서는 VBA 매크로가 작동하지 않습니다. Microsoft 지원 문서에서도 웹용 Excel에서는 VBA 매크로를 만들거나 실행하거나 편집할 수 없다고 안내합니다. 웹에서 파일을 열어 편집할 수는 있어도, VBA 자동화 자체는 데스크톱 Excel에서 실행해야 합니다.
-
인터넷에서 받은 매크로 파일은 기본 차단될 수 있습니다. 파일을 내려받은 출처, 회사 보안 정책, 신뢰할 수 있는 위치 설정에 따라 실행 가능 여부가 달라집니다. 출처가 불명확한 매크로 파일은 실행하지 않는 것이 안전합니다.
-
Mac용 Excel에서는 일부 VBA 명령이 다르게 동작할 수 있습니다. 파일 경로, ActiveX 컨트롤, 일부 Windows 전용 기능에서 차이가 생길 수 있습니다. 여러 사람이 쓰는 자동화 파일이라면 Windows Excel과 Mac Excel에서 각각 테스트해야 합니다.
오늘 바로 시작하는 3단계
-
엑셀을 열고 개발도구 탭을 활성화합니다 — 파일 → 옵션 → 리본 사용자 지정 → 개발 도구 체크
-
원본 파일을 복사한 뒤, 위 VBA 레시피 중 내 업무에 맞는 코드 1개를 골라 Alt+F11에 붙여넣고 테스트합니다
-
더 복잡한 작업이 필요하면 ChatGPT에 작업 범위, 시트명, 예외 조건을 포함해 "이 작업을 VBA로 만들어줘"라고 요청합니다
자동화는 프로그래머만의 영역이 아닙니다. 복사본 파일에서 작은 매크로 하나를 테스트해보는 것만으로도 매일 반복하던 10분, 30분짜리 작업을 줄일 수 있습니다. 중요한 것은 원본 파일을 바로 건드리지 않고, 업무 구조에 맞게 범위와 조건을 확인한 뒤 적용하는 것입니다.
자주 묻는 질문
Q: 엑셀 매크로와 VBA는 무엇이 다른가요?
A: 매크로는 반복 동작을 녹화해 재생하는 기능이고, VBA는 그 동작을 코드로 정밀하게 제어하는 언어입니다. 매크로 녹화로 코드 초안을 자동 생성한 뒤 VBA 편집기에서 범위·시트명·조건을 수정하면 코딩 지식이 많지 않아도 실무 자동화를 시작할 수 있습니다.
Q: 처음 매크로를 만들 때 가장 흔한 실수는 무엇인가요?
A: 절대 참조와 상대 참조의 차이를 모르고 녹화하는 것이 가장 흔한 실수입니다. 절대 참조로 A1에서 녹화한 매크로는 다음 실행 때도 A1을 기준으로 작동합니다. 상대 참조는 같은 구조의 표에서 시작 위치만 달라질 때 유리하지만, 데이터 범위를 자동으로 찾아주는 기능은 아니므로 마지막 행이 자주 바뀌는 업무는 VBA 코드로 보완해야 합니다.
Q: 매크로 파일을 저장하고 다시 열면 왜 보안 경고가 뜨나요?
A: 매크로는 악성 코드에도 악용될 수 있어서 Excel이 파일 출처와 보안 설정에 따라 실행을 제한하기 때문입니다. 내가 직접 만든 파일이나 신뢰할 수 있는 내부 파일은 .xlsm으로 저장하고, 필요한 경우 신뢰할 수 있는 위치에 보관해 사용할 수 있습니다. 인터넷에서 다운로드한 매크로 파일은 기본 차단될 수 있으며, 출처가 불명확하면 실행하지 않는 것이 안전합니다.
Q: ChatGPT로 VBA 코드를 받으려면 어떻게 프롬프트를 써야 하나요?
A: "엑셀에서 [작업 설명]. [데이터 위치/범위]. [예외 조건]. [결과 위치]. VBA 코드로 만들어줘." 형식이 좋습니다. 예를 들어 "A2:A500 범위의 날짜를 YYYY-MM-DD 형식으로 통일하고, 변환할 수 없는 값은 노란색으로 표시하는 VBA 코드 만들어줘"처럼 요청하면 됩니다. 받은 코드는 Alt+F11 → 삽입 → 모듈에 붙여넣고 복사본 파일에서 먼저 실행합니다.
Q: 엑셀 매크로가 작동하지 않는 환경이 있나요?
A: Excel Online과 모바일 앱에서는 VBA 매크로를 만들거나 실행하거나 편집할 수 없습니다. 웹 환경이 주 업무라면 Office Scripts나 Power Automate를 검토하는 편이 좋습니다. Mac용 Excel에서도 일부 VBA 명령이 다르게 동작할 수 있으므로, 여러 사람이 쓰는 자동화 파일은 데스크톱 Windows Excel에서 먼저 검증하는 것이 안정적입니다.
✍️ 작성자 선정현 · 게시 2026-04-15
댓글
댓글 쓰기