본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 05. 20. 22:07

【금단의 해킹】 Excel 내장 Copilot을 VBA와 CDP(Chrome DevTools Protocol)로 직접 조종하는 흑마술

요약

Excel 내장 Copilot 패널을 VBA를 통해 직접 제어하기 위해 WebView2의 기반인 Chromium 엔진과 CDP(Chrome DevTools Protocol)를 활용하는 기술적 방법을 소개합니다. Windows API를 사용하여 프로세스 범위 내에서만 디버깅 포트를 활성화함으로써 보안 리스크를 최소화하며 Copilot을 자동화하는 혁신적인 접근법을 다룹니다.

핵심 포인트

  • Excel Copilot 패널은 WebView2(Chromium 기반)로 구현되어 있어 CDP를 통한 제어가 가능함
  • 환경 변수 `WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS`에 `--remote-debugging-port`를 설정하여 디버깅 모드 활성화 가능
  • Windows API `SetEnvironmentVariableW`를 사용하여 시스템 전체가 아닌 현재 Excel 프로세스에만 환경 변수를 적용함으로써 보안성 확보
  • 기존의 UIAutomation 방식보다 가볍고 심리스한 자동화 구현 가능

최근 Excel에 내장된 Copilot이 엄청나게 편리해졌죠.

이전에는 리본 메뉴에 배치된 버튼을 통한 단순한 채팅 화면(Web 버전과 큰 차이 없음)이었지만, 최근에는 오른쪽 하단에 상주하며 현재 열려 있는 통합 문서의 문맥을 이해하면서 직접 셀을 편집해 줄 정도로 진화했습니다.

게다가 M365 기반으로 동작하기 때문에, 직접 만든 에이전트도 호출할 수 있는 신의 사양입니다.

이렇게 편리해지다 보니, 저로서는 당연히 이런 생각이 들었습니다.

「VBA에서 이 Excel에 내장된 Copilot과 직접 주고받고 싶다……🫠」

하지만 평범하게 검색해 봐도 「Copilot을 사용하여 VBA 코드를 생성하자!」와 같은 기사뿐이며, 「VBA로 Copilot 패널 자체를 자동 조작하는」 방법은 검색되지 않습니다.

조금 아는 사람이라면 「UIAutomation을 사용하면 되지 않을까?」라고 생각할 수도 있겠지만, 그 특유의 동작 무거움과 심리스(Seamless)함의 결여는 피하고 싶은 부분입니다.

물론 Office Scripts나 Power Automate, Copilot Studio를 통한 REST API와 같은 「정규 루트」는 존재합니다.

하지만…… 그게 아닙니다.

**「지금 열려 있는, 이 로컬 Excel의 VBA에서 직접 저 패널의 AI와 대화하고 싶다」**는 것입니다🥺

포기하려던 그때, 어떤 「구조」를 깨달음으로써 완전히 길이 열렸습니다.

최근의 Windows 데스크톱 앱은 「겉모습은 네이티브 앱, 두뇌는 Web」이라는 구조(가와 네이티브)로 잠식되고 있습니다. Windows 7 시대와는 완전히 패러다임이 바뀌었습니다.

이 「겉모습(가와)」을 제공하는 것이 WebView2입니다.

그리고 WebView2의 핵심 엔진은 Google 제작의 Chromium입니다.

Chromium의 자동화라고 하면……

그렇죠, 자동화 업계 최강의 뒷문인 **「CDP(Chrome DevTools Protocol)」**입니다.

최근에는 AI용으로 해당 프로토콜을 다루기 쉬운 도구들도 등장하여 편리함과 인지도가 높아지고 있습니다.

즉, 다음과 같은 방정식이 성립합니다.

「Excel에 내장된 Copilot」 = 「WebView2」 = 「Chromium」 = 「CDP로 완전 제어 가능!!🤯」

VBA에서 CDP를 제어하는 수법에 대해서는, IE 종료 시 업계를 떠들썩하게 했던 아래의 획기적인 기사를 알고 계신 분도 많을 것입니다.

WebView2에는 환경 변수 WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS를 이용하여 임의의 추가 실행 인수를 전달할 수 있는 구조가 있습니다.

즉, 이 환경 변수에 --remote-debugging-port=9222를 설정해 주면, Excel 내의 Copilot 패널이 「외부에서 디버그(제어) 가능한 상태」로 기동됩니다.

단, Windows 시스템 속성에서 환경 변수를 설정해 버리면 PC 전체의 WebView2에 영향을 주어 보안 리스크가 매우 큽니다.

그래서 Windows API인 SetEnvironmentVariableW를 사용하여, 「지금 기동 중인 Excel 프로세스 내에서만 유효한 환경 변수」로 스코프(Scope)를 극소화합니다. 관리자 권한도 필요 없는, 최고로 스마트한 해킹입니다.

Private Declare PtrSafe Function SetEnvironmentVariableW Lib "kernel32" (ByVal lpName As LongPtr, ByVal lpValue As LongPtr) As Long '프로세스 내 환경 변수용 API
Sub SwichingRemoteDebugging(Optional Port As Long = 9222)
Const EnvironmentName As String = "WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS"
...

이를 실행한 후에 Copilot 버튼을 눌러 패널을 기동하면, 디버그 포트가 열린 상태로 Copilot이 실행됩니다.

포트 사양상 「선착순」이 됩니다.

Excel 내에서 Copilot 이외의 다른 WebView2 기능이 먼저 기동되어 버리면 포트를 점유당하게 되므로, 그 경우에는 Excel을 재기동하거나 작업 관리자에서 WebView2 프로세스를 Kill(종료)해 주세요.

그 이후의 WebSocket 연결 등 VBA 측의 CDP 기반에 대해서는 아래의 훌륭한 기사에 상세 내용이 나와 있으므로, 그쪽을 참조해 주세요.

포트에 접속할 수 있게 되면, 목적의 에이전트(M365 Copilot 등) 화면까지 수동으로 진행합니다.

전체 코드를 올리면 내용이 너무 길어지기 때문에, 여기서는 "어떻게 AI와 대화하고 있는가"의 핵심 부분(CDP의 커맨드와 이벤트)만을 해설합니다.

XPath 등을 구사하면 목적의 화면까지도 자동 제어할 수 있지만, 여기서는 설명을 생략합니다.

프롬프트 입력:

CDP의 DOM 조작 기능을 사용하여, XPath //*[@id='m365-chat-editor-target-element']에 텍스트를 입력합니다.

전송 버튼 클릭:

XPath //*[@id='m365-chat-input-shared-wrapper']//button[@type='submit']에 클릭 이벤트(Click Event)를 발생시킵니다.

AI로부터의 답변을 "도청"하기:

이 부분이 가장 중요한 포인트입니다. CDP의 Network 도메인을 활성화하여, Network.webSocketFrameReceived라는 비동기 이벤트(Asynchronous Event)를 캐치합니다. 이것이 Copilot의 뒷단에서 흐르고 있는 가공되지 않은 수신 데이터입니다.

데이터 추출:

수신된 프레임(Frame)을 VBA 측에서 파싱(Parsing)하여 추출합니다. 처리를 고안하면 실시간으로 즉시 실행 창(Immediate Window) 출력도 가능합니다.

성공하면 다음과 같이 "VBA가 Copilot에 질문을 던지고, 돌아온 답변을 실시간으로 즉시 실행 창에 추가해 나가는" 꿈 같은 자동화가 완성됩니다!

현시점의 Copilot은 마지막에 응답 메시지의 전문을 보내주므로, 그 부분만 JSON 파싱 처리를 하여 응답 텍스트를 추출하는 것도 가능합니다.

이번에는 일반적인 질문으로서의 데모(Demo) 영상이지만, 이것이 커스텀한 AI 에이전트라면 어떨까요?

정해진 포맷(JSON 등)으로 반환하도록 지시한다면, 연계 능력이 매우 높아지지 않을까요? 😋

WebView2라는 기술이 보급되었기에, 수십 년 된 언어인 "VBA"로부터 최신 "Copilot (생성형 AI)"를 CDP라는 공통 언어로 직접 컨트롤할 수 있게 되었습니다.

만약 현재의 데스크톱 앱이 예전 방식의 순수한 "네이티브 Windows 앱 (C++나 C#의 집합체)"인 채로 진화했다면, 이런 일은 도저히 불가능했을 것입니다. 좌표 계산이나 불안정한 포커스 제어에 의존하는 "UIAutomation 지옥"에 빠졌을 것입니다.

Windows 7 시대와 같은 "네이티브 앱다움"은 사라져 가고 있습니다.

하지만 자동화 엔지니어의 관점에서 보면, **"CDP라는 Web의 표준 명령 프로토콜만 알고 있다면, OS 상의 모든 모던 앱을 해킹할 수 있는 시대가 되었다"**는 뜻입니다. 이 사실에 형언할 수 없는 로망을 느끼지 않을 수 없습니다.

VBA가 현장의 투박한 업무 로직을 제패하고 -
**Chromium (CDP)**가 모든 UI의 인프라로서 세계를 제패하고 -
**AI (Copilot)**가 기계로는 불가능했던 "모호한 처리"를 제패했다

이 세 가지가 하나의 Excel 파일 안에서 완벽하게 연결되는 시대가 왔습니다.

"VBA는 오래되었다"라고 한탄하기 전에, 이 최강의 키메라 환경을 여러분도 꼭 마음껏 즐겨보시기 바랍니다! 🤠

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0