챗GPT로 엑셀 VBA 자동화 코드 만드는 방법|초보자 실습 가이드

엑셀에서 매일 같은 데이터를 정리하거나 보고서를 작성하다 보면 반복 작업에 많은 시간이 소요됩니다. 여러 셀에 수식을 입력하고, 표를 정리하고, 합계를 계산하는 일을 매번 수작업으로 처리하는 것은 비효율적입니다.

이러한 반복 작업을 줄이는 방법 중 하나가 엑셀 VBA 자동화입니다. VBA는 엑셀에서 반복적인 작업을 자동으로 실행할 수 있도록 하는 프로그래밍 언어입니다.

과거에는 VBA 문법을 직접 공부해야 했지만, 지금은 챗GPT에 원하는 작업을 구체적으로 설명하면 VBA 코드 초안을 만들고 수정하는 데 도움을 받을 수 있습니다.

이번 글에서는 VBA를 처음 사용하는 사람도 따라 할 수 있도록 챗GPT로 자동화 코드를 만드는 방법, 엑셀에 적용하는 순서, 실제 매출 데이터 자동 정리 실습, 오류 해결 방법까지 알아보겠습니다.

엑셀 VBA 자동화란 무엇인가?

VBA는 Visual Basic for Applications의 약자로, 마이크로소프트 오피스 프로그램에서 반복 작업을 자동화하는 데 사용하는 프로그래밍 언어입니다.

엑셀에서는 VBA를 이용해 매크로를 만들 수 있습니다. 매크로는 미리 작성된 명령을 순서대로 실행하는 기능입니다.

예를 들어 매일 판매 데이터를 입력한 뒤 매출액을 계산하고 표를 정리해야 한다면, 이 작업을 VBA 코드로 만들어 한 번에 실행할 수 있습니다.

반복 작업VBA 자동화 예시
매출 계산판매수량과 단가를 곱해 매출액 계산
데이터 정리빈 행 확인, 셀 서식 통일
보고서 작성매출 합계 계산 및 보고서 시트 생성
파일 관리지정한 폴더에 파일 저장
데이터 검색조건에 맞는 행 찾기
여러 시트 처리시트별 데이터를 하나로 취합

VBA를 사용하면 반복적인 작업을 줄일 수 있지만, 잘못 작성된 코드는 원본 데이터를 변경하거나 삭제할 수도 있습니다.

따라서 처음에는 원본 파일의 복사본에서 테스트하는 것이 중요합니다.

챗GPT로 VBA 코드를 만드는 기본 원리

챗GPT에 VBA 코드를 요청할 때는 어떤 작업을 자동화하려는지 구체적으로 설명해야 합니다.

단순히 “엑셀 자동화 코드를 만들어 줘”라고 질문하면 실제 업무와 맞지 않는 코드가 만들어질 수 있습니다.

반대로 데이터가 저장된 시트 이름, 열 위치, 실행할 작업, 원하는 결과를 알려주면 목적에 맞는 코드를 작성하는 데 도움이 됩니다.

예를 들어 다음과 같이 요청할 수 있습니다.

“엑셀에서 A열은 상품명, B열은 판매수량, C열은 판매단가입니다. D열에 판매수량과 판매단가를 곱한 매출액을 자동으로 계산하는 VBA 코드를 만들어 주세요. 첫 번째 행은 제목이고 실제 데이터는 2행부터 시작합니다. 기존 데이터는 삭제하지 않도록 작성해 주세요.”

이처럼 작업 조건을 구체적으로 전달하면 코드의 수정 횟수를 줄일 수 있습니다.

다만 챗GPT가 작성한 코드는 실제 파일의 구조와 실행 환경에 따라 수정이 필요할 수 있습니다.

실습용 엑셀 판매 데이터 준비하기

이번 실습에서는 상품별 매출액을 자동으로 계산하는 VBA 매크로를 만들어 보겠습니다.

먼저 엑셀에서 새 통합문서를 열고 첫 번째 시트의 이름을 판매관리로 변경합니다.

다음 데이터를 A1 범위에 입력합니다.

A열 상품명B열 판매수량C열 판매단가
티셔츠1020,000
바지540,000
재킷380,000
운동화460,000
모자815,000

A1에는 상품명, B1에는 판매수량, C1에는 판매단가를 입력합니다.

D1에는 매출액이라는 제목을 입력하고 D2은 비워 둡니다.

이번 실습의 목표는 VBA 코드를 실행했을 때 D열에 매출액이 자동으로 계산되도록 만드는 것입니다.

챗GPT에 VBA 자동화 코드 요청하기

챗GPT 대화창에 다음 내용을 입력합니다.

“엑셀 VBA 초보자입니다. ‘판매관리’ 시트에서 A열은 상품명, B열은 판매수량, C열은 판매단가입니다. 1행은 제목이며 2행부터 데이터가 있습니다. 마지막 데이터 행까지 B열과 C열을 곱하여 D열에 매출액을 자동 계산하는 VBA 코드를 만들어 주세요. 데이터 행 수가 늘어나도 작동하도록 작성하고, 기존 A~C열 데이터는 변경하지 마세요. 코드에 설명도 포함해 주세요.”

이 요청을 바탕으로 다음과 같은 VBA 코드를 만들 수 있습니다.

Sub 매출액자동계산() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Set ws = ThisWorkbook.Worksheets("판매관리") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row If lastRow < 2 Then MsgBox "계산할 데이터가 없습니다." Exit Sub End If ws.Range("D1").Value = "매출액" For i = 2 To lastRow If IsNumeric(ws.Cells(i, "B").Value) And _ IsNumeric(ws.Cells(i, "C").Value) Then ws.Cells(i, "D").Value = _ ws.Cells(i, "B").Value * ws.Cells(i, "C").Value Else ws.Cells(i, "D").ClearContents End If Next i ws.Range("D2:D" & lastRow).NumberFormat = "#,##0" MsgBox "매출액 계산이 완료되었습니다." End Sub

이 코드는 판매관리 시트에서 A열의 마지막 데이터 행을 확인한 후, B열과 C열의 숫자를 곱해 D열에 계산 결과를 입력합니다.

단, 이 예제는 A열에 상품명이 연속해서 입력되어 있다는 전제로 작성되었습니다. 상품명이 비어 있거나 중간에 다른 형식의 데이터가 있는 경우에는 추가 검증이 필요합니다.

또한 D열의 기존 값은 다시 계산한 결과로 변경되므로, D열에 보존해야 할 데이터가 있다면 실행하지 않아야 합니다.

엑셀에서 VBA 편집기 실행하는 방법

챗GPT가 만든 VBA 코드를 실제 엑셀에서 사용하려면 VBA 편집기에 입력해야 합니다.

이번 실습은 Windows용 데스크톱 엑셀을 기준으로 설명합니다. 웹용 엑셀에서는 VBA 매크로를 직접 작성하거나 실행할 수 없습니다.

다음 순서대로 진행합니다.

  1. 엑셀에서 실습 파일을 엽니다.
  2. 키보드에서 Alt + F11을 누릅니다.
  3. VBA 편집기가 열리면 상단 메뉴에서 ‘삽입’을 클릭합니다.
  4. ‘모듈’을 선택합니다.
  5. 새로 만들어진 코드 창에 챗GPT가 작성한 VBA 코드를 붙여넣습니다.
  6. 코드가 올바르게 입력되었는지 확인합니다.

VBA 편집기를 닫으려면 Alt + Q를 누르거나 엑셀 창으로 돌아가면 됩니다.

코드를 입력한 다음에는 반드시 매크로를 지원하는 파일 형식으로 저장해야 합니다.

VBA 매크로 파일 저장 방법

일반적인 엑셀 파일 형식인 .xlsx는 VBA 매크로 코드를 저장할 수 없습니다.

VBA 코드를 포함한 파일은 매크로 사용 통합문서 형식인 .xlsm으로 저장해야 합니다.

저장 순서는 다음과 같습니다.

  1. 엑셀 상단에서 ‘파일’을 클릭합니다.
  2. ‘다른 이름으로 저장’을 선택합니다.
  3. 저장할 폴더를 지정합니다.
  4. 파일 형식에서 ‘Excel 매크로 사용 통합 문서 (*.xlsm)’를 선택합니다.
  5. 파일 이름을 입력하고 저장합니다.

예를 들어 파일 이름을 판매관리자동화.xlsm으로 지정할 수 있습니다.

매크로를 저장하지 않은 상태에서 일반 .xlsx 형식으로 저장하면 VBA 코드가 보존되지 않을 수 있으므로 주의해야 합니다.

VBA 매크로 실행하기

코드 입력과 파일 저장이 끝났다면 실제로 매크로를 실행해 보겠습니다.

엑셀 화면에서 Alt + F8을 누릅니다.

매크로 목록이 나타나면 매출액자동계산을 선택한 뒤 ‘실행’을 클릭합니다.

코드가 정상적으로 작동하면 D열에 다음과 같은 결과가 표시됩니다.

상품명판매수량판매단가매출액
티셔츠1020,000200,000
바지540,000200,000
재킷380,000240,000
운동화460,000240,000
모자815,000120,000
합계30–1,000,000

표의 마지막 합계 행은 결과를 설명하기 위한 것이며, 앞서 작성한 VBA 코드는 개별 매출액만 계산합니다.

매크로를 실행하면 각 상품의 매출액이 계산되고 완료 메시지가 표시됩니다.

매크로 실행이 차단된다면 엑셀의 보안 경고와 파일의 출처를 확인해야 합니다. 출처를 알 수 없는 매크로는 실행하지 않는 것이 안전합니다.

챗GPT로 매출 합계 자동 계산 코드 추가하기

개별 상품의 매출액뿐 아니라 전체 매출액까지 자동으로 계산하려면 챗GPT에 추가 기능을 요청할 수 있습니다.

다음과 같이 질문합니다.

“앞서 만든 매출액 자동 계산 VBA 코드에 전체 매출 합계를 구하는 기능을 추가해 주세요. 마지막 데이터 다음 행의 C열에는 ‘총매출’, D열에는 전체 매출액을 표시해 주세요. 매크로를 여러 번 실행해도 합계 행이 중복 생성되지 않도록 해 주세요.”

이 요청을 반영한 코드는 다음과 같습니다.

Sub 매출액및합계계산() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim totalSales As Double Set ws = ThisWorkbook.Worksheets("판매관리") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row If lastRow < 2 Then MsgBox "계산할 데이터가 없습니다." Exit Sub End If totalSales = 0 ws.Range("D1").Value = "매출액" For i = 2 To lastRow If IsNumeric(ws.Cells(i, "B").Value) And _ IsNumeric(ws.Cells(i, "C").Value) Then ws.Cells(i, "D").Value = _ ws.Cells(i, "B").Value * ws.Cells(i, "C").Value totalSales = totalSales + ws.Cells(i, "D").Value Else ws.Cells(i, "D").ClearContents End If Next i ws.Cells(lastRow + 1, "C").Value = "총매출" ws.Cells(lastRow + 1, "D").Value = totalSales ws.Range("D2:D" & lastRow + 1).NumberFormat = "#,##0" MsgBox "매출 계산과 합계 작성이 완료되었습니다." End Sub

이 코드는 A열의 마지막 상품 행을 기준으로 매출액을 계산하고, 마지막 상품 아래에 총매출을 표시합니다.

합계 행의 A열은 비어 있으므로 같은 데이터를 대상으로 여러 번 실행하더라도 합계 행이 계속 추가되지 않습니다.

다만 합계 행에 이미 다른 자료가 있거나 데이터가 불규칙하게 배치되어 있다면 해당 셀을 덮어쓸 수 있습니다. 실제 업무에서는 합계 표시 위치를 별도로 정하거나 전용 보고서 시트에 결과를 작성하는 방법이 더 안전합니다.

버튼을 클릭해 VBA 자동화 실행하기

매번 Alt + F8을 눌러 매크로를 실행하는 것이 번거롭다면 엑셀 시트에 버튼을 만들어 사용할 수 있습니다.

먼저 엑셀 상단에 ‘개발 도구’ 메뉴가 있는지 확인합니다.

개발 도구 메뉴가 보이지 않는다면 다음 순서로 표시할 수 있습니다.

  1. ‘파일’을 클릭합니다.
  2. ‘옵션’을 선택합니다.
  3. ‘리본 사용자 지정’을 클릭합니다.
  4. 오른쪽 목록에서 ‘개발 도구’를 선택합니다.
  5. ‘확인’을 클릭합니다.

개발 도구 메뉴가 표시되면 ‘삽입’에서 양식 컨트롤의 ‘단추’를 선택합니다.

시트의 원하는 위치에 버튼을 만든 후 매크로 지정 창에서 매출액및합계계산을 선택합니다.

버튼 이름은 매출 자동 계산으로 변경할 수 있습니다.

이제 버튼을 클릭하면 VBA 코드가 실행됩니다.

버튼을 만들기 전에 매크로가 정상적으로 작동하는지 먼저 확인하는 것이 좋습니다.

챗GPT로 여러 시트의 데이터를 자동 정리하기

실무에서는 하나의 시트만 사용하는 것이 아니라 여러 시트에 데이터를 나누어 저장하는 경우가 많습니다.

예를 들어 1월, 2월, 3월의 판매 내역을 각각 다른 시트에 저장했다면 이를 하나의 시트로 모으는 자동화가 필요할 수 있습니다.

챗GPT에 다음과 같이 요청할 수 있습니다.

“엑셀에 ‘1월’, ‘2월’, ‘3월’ 시트가 있습니다. 각 시트의 A열부터 D열까지 판매 데이터를 ‘통합매출’ 시트로 모으는 VBA 코드를 만들어 주세요. 첫 번째 행은 제목이므로 한 번만 복사하고, 기존 원본 시트는 변경하지 마세요. 통합매출 시트가 없으면 새로 만들고, 중복 복사가 발생하지 않도록 작성해 주세요.”

이처럼 시트 이름과 데이터 범위, 중복 처리 조건을 구체적으로 알려주면 실제 업무에 맞는 코드를 만드는 데 도움이 됩니다.

여러 시트를 통합하는 경우에는 시트마다 열 순서가 동일한지, 중복된 거래가 있는지, 날짜 형식이 일치하는지도 확인해야 합니다.

챗GPT로 VBA 실행 오류 해결하기

챗GPT가 작성한 코드를 실행했는데 오류가 발생할 수도 있습니다.

대표적인 VBA 오류는 다음과 같습니다.

오류 상황주요 원인확인 방법
런타임 오류 9시트 이름이나 배열 인덱스가 잘못됨시트 이름 확인
런타임 오류 13데이터 형식이 맞지 않음숫자·문자 형식 확인
런타임 오류 1004범위 또는 엑셀 작업 문제셀 참조와 시트 상태 확인
컴파일 오류코드 문법 문제오타, 괄호, 명령문 확인
매크로 실행 불가보안 설정 또는 파일 형식 문제파일 출처와 매크로 설정 확인

오류가 발생하면 표시된 오류 번호와 메시지를 확인합니다.

VBA 편집기에서 ‘디버그’ 버튼을 누르면 오류가 발생한 코드 줄이 강조 표시되는 경우가 있습니다.

이때 오류 메시지와 해당 코드 줄을 챗GPT에 전달하면 원인을 분석하는 데 도움이 됩니다.

예를 들어 다음과 같이 질문할 수 있습니다.

“엑셀 VBA 코드를 실행했는데 런타임 오류 9가 발생했습니다. 오류가 발생한 코드는 Set ws = ThisWorkbook.Worksheets(‘판매관리’)입니다. 원인을 설명하고 해결 방법을 알려주세요.”

실제 VBA 코드에서는 시트 이름을 큰따옴표로 감싸야 합니다. 또한 해당 시트가 코드가 저장된 통합문서에 존재하는지도 확인해야 합니다.

오류가 발생한 코드 전체와 오류 메시지를 함께 전달하면 문제를 더 정확하게 분석할 수 있습니다.

챗GPT로 VBA 코드를 만들 때 반드시 확인할 사항

VBA는 엑셀 데이터를 직접 수정할 수 있으므로 코드를 실행하기 전에 안전성을 확인해야 합니다.

특히 다음과 같은 명령이 포함되어 있다면 어떤 범위에 적용되는지 살펴봐야 합니다.

VBA 명령기능주의할 점
ClearContents셀 내용 삭제수식과 값이 삭제될 수 있음
Delete셀·행·시트 등 삭제원본 데이터 손실 가능
SaveAs다른 이름으로 저장기존 파일과 이름 충돌 확인
Kill지정한 파일 삭제파일 복구가 어려울 수 있음
Worksheets.Add새 시트 생성불필요한 시트가 반복 생성될 수 있음

챗GPT에 코드를 요청할 때는 다음과 같은 조건을 추가하는 것이 좋습니다.

“원본 데이터는 삭제하지 말고, 기존 파일을 덮어쓰지 않도록 작성해 주세요. 데이터 삭제나 파일 저장이 필요한 경우에는 사용자 확인 메시지를 표시하도록 해 주세요.”

또한 인터넷에서 받은 VBA 코드나 출처가 불분명한 매크로 파일은 보안 위험이 있을 수 있습니다.

엑셀에서 모든 매크로를 무조건 허용하도록 보안 설정을 변경하는 것은 권장하지 않습니다.

VBA 자동화와 일반 엑셀 함수의 차이

엑셀에서는 SUM, IF, XLOOKUP 같은 함수로도 다양한 계산을 할 수 있습니다.

하지만 일반 함수와 VBA 자동화는 사용하는 목적에 차이가 있습니다.

구분엑셀 함수VBA 자동화
주요 목적셀 값 계산여러 작업을 순서대로 실행
사용 방법셀에 수식 입력매크로 코드 실행
데이터 처리계산 결과 표시계산·서식·시트 작업 가능
반복 작업수식 복사 및 자동 계산여러 작업 일괄 처리
학습 난이도비교적 쉬움코드 구조 이해 필요
주의 사항수식 오류데이터 변경·삭제 위험

단순한 합계나 조건별 계산은 일반 엑셀 함수만으로도 충분할 수 있습니다.

반면 여러 시트의 데이터를 통합하거나 매일 반복하는 보고서 작성 작업은 VBA 자동화가 유용할 수 있습니다.

챗GPT에는 현재 작업을 설명하고 엑셀 함수, 피벗테이블, VBA 중 어떤 방법이 적합한지 비교해 달라고 요청할 수도 있습니다.

자주 묻는 질문

Q. VBA를 전혀 몰라도 챗GPT로 자동화 코드를 만들 수 있나요?

가능합니다. 원하는 작업과 데이터 구조를 구체적으로 설명하면 VBA 코드 초안을 작성받을 수 있습니다. 다만 코드를 안전하게 실행하고 오류를 수정하려면 기본적인 VBA 편집기 사용법은 알아두는 것이 좋습니다.

Q. 챗GPT가 만든 VBA 코드는 바로 실행해도 되나요?

먼저 코드를 검토하고 원본 파일의 복사본에서 테스트하는 것이 좋습니다. 특히 셀 삭제, 파일 저장, 시트 변경 기능이 포함되어 있다면 적용 범위를 확인해야 합니다.

Q. 엑셀 웹 버전에서도 VBA를 실행할 수 있나요?

웹용 엑셀에서는 VBA 매크로를 작성하거나 실행할 수 없습니다. VBA를 사용하려면 지원되는 데스크톱 엑셀 환경이 필요합니다. 웹용 엑셀 자동화에는 별도의 Office Scripts 기능을 검토할 수 있습니다.

Q. VBA 매크로를 저장했는데 다시 열면 사라지는 이유는 무엇인가요?

파일을 .xlsx 형식으로 저장했을 가능성이 있습니다. VBA 코드를 보존하려면 .xlsm 형식으로 저장해야 합니다.

Q. 매크로를 실행하면 기존 데이터가 삭제될 수도 있나요?

그럴 수 있습니다. 코드에 셀 내용 삭제, 행 삭제, 파일 덮어쓰기 등의 명령이 포함되어 있다면 원본 데이터가 변경될 수 있습니다. 따라서 중요한 파일은 반드시 백업한 후 실행해야 합니다.

Q. VBA 코드 실행 속도가 느릴 때도 챗GPT로 개선할 수 있나요?

가능합니다. 반복문을 줄이거나 배열을 활용하는 등 코드 구조를 개선하는 방법을 제안받을 수 있습니다. 다만 실행 속도와 결과의 정확성은 실제 파일에서 테스트해야 합니다.

챗GPT로 엑셀 VBA 자동화를 시작하는 방법

챗GPT를 활용하면 VBA 문법을 처음부터 모두 외우지 않아도 반복 작업을 자동화하는 코드를 만들어 볼 수 있습니다.

처음에는 매출액 계산, 셀 서식 정리, 합계 작성처럼 간단한 작업부터 시작하는 것이 좋습니다.

이후 여러 시트 통합, 월별 보고서 작성, 조건별 데이터 분류 등으로 자동화 범위를 확장할 수 있습니다.

가장 중요한 것은 자동화할 작업을 명확하게 설명하고, 챗GPT가 작성한 코드를 실제 데이터에 적용하기 전에 충분히 검증하는 것입니다.

작은 반복 작업부터 자동화하면서 코드를 이해하고 개선해 나간다면 엑셀을 보다 효율적인 업무 관리 도구로 활용할 수 있습니다.

공식 참고자료

엑셀 VBA의 기본 사용법과 매크로 실행, 파일 저장 및 보안 설정은 Microsoft 공식 문서에서 확인할 수 있습니다.

확인하기 : Microsoft Excel VBA 공식 설명

확인하기 : Microsoft 엑셀 매크로 만들기 및 실행

확인하기 : Microsoft 매크로 보안 설정 안내

확인하기 : Microsoft Excel VBA 시작 가이드

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다