오랫동안 Excel VBA나 Access를 사용한 업무 시스템 개발을 해왔습니다.
최근에는 Claude Code 같은 AI 에이전트를 이용할 기회가 늘어나면서, 프로그램 수정이나 새로운 기능 구현까지 맡기는 경우가 많아졌습니다.
그런데 Excel VBA에는 한 가지 불편한 문제가 있습니다.
VBA 소스 코드가 Excel 북(Book) 안에 들어 있다는 점입니다.
AI에게 코드를 작성하게 하는 것은 쉽습니다. 하지만 실제 개발에서는 단순히 코드를 받는 것으로 끝나지 않습니다.
기존 코드를 조사하고, 여러 모듈을 수정하며, 변경 내용을 확인한 후 다시 Excel로 되돌려 놓는 과정이 필요합니다.
매번 VBE(Visual Basic Editor)를 열고 복사-붙여넣기를 하는 방식으로는, 애써 활용하려는 AI 에이전트가 충분히 제 역할을 하기 어렵습니다.
그래서 저는 Excel VBA를 외부 파일로 관리하고, AI 에이전트가 직접 편집할 수 있는 환경을 만들었습니다.
실제로 제가 개발에 사용하고 있는 툴이기 때문에, 이번에 GitHub에서 무료로 공개하게 되었습니다.
이름은 ExcelVbaAgentBridge입니다.
GitHub는 여기입니다.
완성된 Excel 매크로는 Releases에서 다운로드할 수 있습니다.
MIT 라이선스로 공개하고 있습니다.
이 툴은 두 개의 Excel 매크로로 구성되어 있습니다.
| 툴 | 역할 |
|---|
| ExcelRepositoryBuilder.xlsm | VBA 코드나 북 구조 정보를 파일로 추출 (쓰기) |
| ExcelRepositoryRestorer.xlsm | 수정된 코드나 폼의 레이아웃을 Excel로 복원 (되돌리기) |
기본적인 개념은 간단합니다.
Excel과 AI 에이전트 사이에, 텍스트 파일을 매개체로 다리를 놓는 시스템입니다.
Builder를 실행하면 대상 Excel 북에서 VBA 코드 등을 추출합니다.
표준 모듈은 .bas,
클래스 모듈 등은 .cls,
UserForm의 컨트롤 정보는 .csv 파일로 저장됩니다.
출력 폴더 구조는 다음과 같습니다.
ExcelRepository/
└── Sample_repository/
├── VBA/
...
소스 코드는 UTF-8을 기본으로 하며, Git에서 차이점(diff) 확인이 용이하도록 구성했습니다.
이렇게 하면 VBE를 열지 않고도 VS Code 등에서 코드를 검색하고 편집할 수 있습니다.
AI 에이전트에게 개발을 맡길 때, 소스 코드만으로는 정보가 부족한 경우가 많습니다.
그래서 북(Book) 자체의 구조 정보도 출력하도록 했습니다.
주요 정보는 다음과 같습니다.
- 시트 이름, 표시 상태, 사용 범위, 수식 개수
- Excel 테이블의 이름과 범위
- 이름 정의와 참조 위치
- 북 이름, 시트 수 등의 기본 정보
이러한 정보를 CSV나 텍스트로 만들어 두면, AI 에이전트가 기존 북 구조를 파악하는 자료가 됩니다.
다만, 현재 버전에서는 셀의 값이나 수식 자체를 모두 추출하는 기능은 아닙니다.
또한, 이 Workbook 정보는 참고용이며, Restorer에 의한 복원에는 대응하지 않습니다.
이번 시스템에서 특히 공들인 부분은 UserForm입니다.
VBA 코드만 추출해서는 폼 위의 컨트롤 위치나 크기를 알 수 없습니다.
그래서 UserForm의 각 컨트롤에 대해 다음 정보를 CSV로 출력합니다.
ControlName,ControlType,Caption,Left,Top,Width,Height,FontName,FontSize,FontBold,ForeColor,BackColor
컨트롤의 위치, 크기, 문자열, 글꼴 등을 텍스트로 관리할 수 있습니다.
AI 에이전트는 이 CSV를 편집함으로써 폼의 레이아웃을 변경할 수 있습니다.
예를 들어,
AI 에이전트에게는 리포지토리 내의 소스 코드를 조사하고 수정하게 합니다.
예를 들어, 다음과 같은 지시가 가능합니다.
Module1.bas에 있는 집계 처리를 확인하고, 날짜 판별에 문제가 없는지 조사해 주세요.
수정이 필요한 경우 해당 모듈만 변경하고, 변경 내용을 설명해 주세요.
AI는 텍스트 파일을 직접 다룰 수 있기 때문에 여러 소스를 조사하면서 작업할 수 있습니다.
수정이 끝나면 Git의 차이점(diff)을 확인합니다.
여기서 중요한 것은, AI가 변경한 것을 무조건 Excel로 되돌리지 않는 것입니다.
변경 부분을 확인하고 문제가 없으면 Restorer를 실행합니다.
Restorer는 리포지토리 내의 파일을 읽어 기존 Excel 북에 반영합니다.
주요 대응 내용은 다음과 같습니다:
| 대상 | 가져오기 동작 |
|---|
| 표준 모듈 | 같은 이름이 있으면 삭제 후 재작성 |
| ... | |
| 다만, 리포지토리에 존재하지 않게 된 모듈을 Excel 측에서 자동으로 삭제하는 완전 동기화 메커니즘은 아닙니다. | |
또한, 새로운 UserForm 자체의 생성이나 CSV에서 삭제된 컨트롤의 자동 삭제에는 대응하고 있지 않습니다.
가져온 후에는 반드시 VBE(Visual Basic Editor)로 컴파일하고, Excel 상에서 동작 확인을 해야 합니다.
이 도구는 Excel의 VBA 프로젝트에 프로그램적으로 접근합니다.
따라서, 일반적인 매크로 실행 허용과는 별도로 다음 설정이 필요합니다.
- Excel의 '파일' → '옵션' 열기
- '트러스트 센터(Trust Center)' → '트러스트 센터 설정' 열기
- '매크로 설정' 선택
- 'VBA 프로젝트 개체 모델에 대한 액세스 허용(Trust access to the VBA project object model)'을 활성화합니다.
저 자신도 평소 사용하지 않는 PC에서 실행했을 때, 이 설정을 잊어서 작동하지 않았습니다.
또한, GitHub에서 다운로드한 매크로가 포함된 북은 Windows나 Office의 보호 기능에 의해 실행이 차단될 수 있습니다.
배포처와 내용을 확인하고 신뢰할 수 있는 파일만 실행해 주세요.
이 도구는 자신의 개발 환경에서 필요했던 기능을 구현한 것입니다.
Excel 북을 완전히 텍스트화하여 복원하는 범용 도구는 아닙니다. 특히, 다음 점에는 주의해야 합니다:
- 가져오기 전에 대상 Excel 북을 반드시 백업할 것
- 매크로 실행 시에는 대상 북이 활성화되어 있는지 확인
- UserForm의 모든 속성이나 이미지 등의 완전 복원에는 대응하지 않음
- 워크시트의 셀 데이터, 수식, 테이블 등의 복원에는 대응하지 않음
- 가져오기 전 자동 백업이나 롤백은 없음
- AI에 의한 수정 후에도 인간에 의한 동작 확인이 필요합니다.
또한, 내보내진 파일에는 VBA 코드 중 연결 문자열이나 업무 정보, 북의 저장 경로 등이 포함될 수 있습니다. 실제 업무 북을 GitHub 등에서 공개할 경우에는 충분한 확인이 필요합니다.
UserForm 레이아웃을 CSV로 만든 덕분에 다른 용도도 생겼습니다. 바로 PowerPoint 상에서 UserForm 레이아웃을 편집하는 방법입니다. PowerPoint라면 도형의 위치 맞추기나 크기 조정이 쉬워서, 컨트롤 배치를 시각적으로 조정할 수 있습니다. 수정된 정보를 CSV에 반영하면 Restorer를 통해 Excel 측의 UserForm에도 적용할 수 있습니다.
이것은 나중에 추가한 응용 기능입니다.
참고로, 이번에 GitHub에서 공개한 Builder와 Restorer에는 PowerPoint 연동용 매크로 자체는 포함되어 있지 않습니다.
이 이야기는 이전에 note에도 썼습니다.
이 도구는 원래 자신의 업무를 쉽게 만들기 위해 만들었습니다. AI 에이전트에게 기존 VBA 프로젝트를 이해시키고 수정을 맡기려면, Excel 외부로 소스 코드를 추출하는 메커니즘이 필요했기 때문입니다.
특별히 복잡한 메커니즘은 아닙니다. 하지만, 마찬가지로 오랫동안 Excel VBA를 사용해 온 개발자에게는 어떤 참고가 될 수도 있을 것 같습니다. 그래서 소스 코드까지 포함하여 GitHub에서 무료 공개하기로 했습니다.
현시점에서는 자신의 실무에 필요한 기능이 중심이지만, 사용할 수 있는 부분이 있다면 자유롭게 활용해 주세요. AI 에이전트의 등장으로 프로그램 개발 방식은 크게 변화하고 있습니다. 새로운 언어나 프레임워크뿐만 아니라, 오랫동안 사용되어 온 Excel VBA나 Access에서도 개발하는 방식을 바꿀 여지는 있다고 생각합니다.
중요한 것은 AI에게 일회성 코드를 작성하게 하는 것뿐만 아니라, 기존 프로그램을 이해하고 지속적으로 수정할 수 있는 환경을 조성하는 것이 아닐까요?
이번 ExcelVbaAgentBridge는 바로 그 목적을 위해 만든 작은 도구입니다.
앞으로는 Access의 Git 관리나 AI 에이전트를 활용한 개발에 대해서도 실제 경험을 소개하고 싶습니다.
끝까지 읽어주셔서 감사합니다.
GitHub
최신 버전 다운로드
MIT License