GPT-4 Turbo(또는 Azure OpenAI) API를 엑셀 내부에서 호출하여 셀 함수처럼 활용할 수 있는 방법을 정리한다. 각 방법은 설치 난이도, 유지보수, 보안 관점에서 장단점이 분명하다. 조직 상황에 맞춰 선택하도록 권장한다.
목차
- 준비 사항 : API 키 관리‧요금 구조 이해
- 방법 ① : VBA(Visual Basic for Applications) HTTP 클라이언트
- 방법 ② : Office Script + Power Automate 클라우드 플로우
- 방법 ③ : Python in Excel 내장 파이썬 모듈
- 방법 ④ : Power Fx 사용자 정의 함수(Custom Function)
- 보안 · 비용 최적화 체크리스트
- 결론
1. 준비 사항 : API 키 관리‧요금 구조 이해
- OpenAI 플랫폼 대시보드에서
sk-
로 시작하는 비밀 키를 발급한다. 조직 단위라면 워크스페이스-별 키를 권장한다. - 1 K 토큰 ≒ 한글 750 자. GPT-4 Turbo 128K 입력 기준 $0.01/1 K in, $0.03/1 K out 요율이 적용된다(2025-05 기준).
- 엑셀 매크로 파일(.xlsm)이나 Office Script에 키를 평문 저장하지 않는다. ➜
Environment Variable
또는 Azure Key Vault / AWS Secrets Manager 호출이 권장된다.
2. 방법 ① : VBA HTTP 클라이언트
2-1. 개념
엑셀 데스크톱(Win/Mac)에서 VBA 매크로로 REST 요청을 보내고, 응답 JSON을 파싱해 셀에 반환한다. 별도 애드-인 설치가 필요 없다.
2-2. 핵심 코드
아래 코드는 **모듈(Module)**에 삽입한다. 복사-붙여넣기 편의를 위해 들여쓰기와 주석을 구분하였다.
'---------- GPTRequest.bas ----------
Option Explicit
' GPT 호출 함수 (셀에서 =GPT_CALL(A1)처럼 사용)
Function GPT_CALL(prompt As String) As String
' 1) 엔드포인트 설정
Dim url As String
url = "https://api.openai.com/v1/chat/completions"
' 2) HTTP 객체 초기화
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
' 3) 요청 본문(JSON) 구성
Dim payload As String
payload = "{""model"":""gpt-4-turbo"", ""messages"":[{""role"":""user"",""content"":""" & _
Replace(prompt, """", "\""") & """}], ""max_tokens"":256}"
' 4) 요청 전송
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer " & Environ$("OPENAI_KEY")
http.send payload
' 5) 응답 파싱
Dim response As String
response = http.responseText
' 간단히 따옴표 기준 Split → 실제 프로젝트에서는 JSON 파서 사용 권장
GPT_CALL = Split(Split(response, """content"":""")(1), """""}")(0)
End Function
'------------------------------------
사용 예시
셀 A2에 =GPT_CALL("문장 요약해 줘")
를 입력하면 B2에 응답이 출력된다.
2-3. 장단점
장점 | 단점 |
---|---|
추가 라이브러리 불필요 | WinHTTP 의존 → 회사 보안정책에 따라 차단 가능 |
모든 엑셀 버전 지원 | 응답 파싱 성능 한계, 비동기 처리 복잡 |
3. 방법 ② : Office Script + Power Automate
3-1. 개념
Excel for Web 환경에서 TypeScript 형식의 Office Script를 작성하고, Power Automate 클라우드 플로우로 API 호출을 위임한다. 서버리스로 동작하므로 키를 안전하게 보관할 수 있다.
3-2. 플로우 구성 절차
- Office Script → 현재 워크시트 범위 값을
scriptReturn
으로 출력. - Power Automate →
Excel Online (Business)
커넥터로 스크립트 실행.- HTTP 액션으로 GPT API 호출(
Bearer @{connectionVariables('OPENAI_KEY')}
사용). - 결과를 다시 Excel 테이블에 삽입.
- Office Script에서 결과 범위를 받아 셀에 작성.
3-3. TypeScript 예시
//---------- main.ts ----------
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const prompt = sheet.getRange("A2").getText();
// Power Automate에서 받은 JSON 문자열을 B2에 기록
const response = workbook.getParameter("gptResult");
sheet.getRange("B2").setValue(response);
}
//--------------------------------
3-4. 평가
- SaaS 모델이다. 로컬 환경 제약이 없다.
- 플로우 실행 이력, 에러 로깅이 자동화된다.
- 단, Power Automate 유료 플랜이 필요하다.
4. 방법 ③ : Python in Excel 내장 파이썬 모듈
4-1. 개념
Microsoft 365(버전 2402 이후)는 xl() 셀 매직으로 파이썬 코드를 바로 실행한다. openai
라이브러리가 프리-인스톨되어 있으며, 파워 BI 연결도 지원한다.
4-2. 예제 시트(step-by-step)
- B1 셀 입력 →
=PY(
로 시작하여 파이썬 모드 진입. - 코드 전체 붙여넣기.
# GPT 함수 정의
import os, json, openai
openai.api_key = os.getenv("OPENAI_KEY")
def gpt_complete(prompt: str, model: str = "gpt-4-turbo", max_tokens: int = 256) -> str:
"""단일 프롬프트를 GPT로 전송하고 텍스트만 반환한다."""
rsp = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}],
max_tokens=max_tokens,
)
return rsp.choices[0].message.content.strip()
# 엑셀 셀(A2) 읽기
prompt = xl("A2") # xl()은 셀 데이터를 파이썬으로 가져온다
xl("B2", gpt_complete(prompt))
- 셀 Shift + Enter → 즉시 결과 확인.
4-3. 특징
- 로컬 Key Vault(Windows 자격 증명 관리자) 연동 가능.
pandas
로 대량 프롬프트 처리 후 테이블로 다시 삽입이 쉽다.- IT 부서가 워크시트 수준 권한 만으로 실행을 제한할 수 있다.
5. 방법 ④ : Power Fx 사용자 정의 함수(Custom Function)
5-1. 개념
Excel-JS 기반 Office Add-in을 제작해 Power Fx 함수(=GPT.COMPLT()
)를 노출한다. 리본 메뉴에 전용 버튼을 배치해 UX를 맞춤화한다. Typescript로 컴파일 후, SharePoint 앱 카탈로그에 배포할 수 있다.
5-2. 핵심 코드 스니펫
// ExcelFunctions.ts
import { InvocationContext, runFunction } from "excel-custom-functions-task-pane";
import OpenAI from "openai";
async function gpt(prompt: string): Promise<string> {
const client = new OpenAI({ apiKey: await OfficeRuntime.storage.getItem("OPENAI_KEY") });
const chat = await client.chat.completions.create({
model: "gpt-4-turbo", max_tokens: 256,
messages: [{ role: "user", content: prompt }],
});
return chat.choices[0].message.content.trim();
}
runFunction("GPT.COMPLT", async (ctx: InvocationContext, prompt: string) => {
return await gpt(prompt);
});
매니페스트 XML에서 <Function Name="GPT.COMPLT" />
선언 후 패키징하면 된다.
5-3. 평가
- 대기업 IT 부서가 사내 스토어로 통제 배포할 때 유리하다.
- 초기 개발 공수가 크다. _캡슐화 최적화_와 버전 관리가 필요하다.
6. 보안 · 비용 최적화 체크리스트
- Key 저장 위치
- 로컬 파일 금지. 환경 변수 또는 보안 저장소 사용.
- Rate-limit
- Excel 대량 계산 시 API 동시 호출 폭주 위험. 배치 처리 권장.
- 프롬프트 필터링
- 개인정보·기밀 정보가 포함되지 않도록 RegEx 전처리 또는 DLP 정책 연동.
- 캐싱 전략
- 동일 프롬프트 반복 호출 시 Redis / 로컬 시트 캐시로 비용 30 % 이상 절감 가능.
- 감사 로깅
- 호출 로그를 Azure Monitor / Google Cloud Logging에 전송하여 추적성을 확보한다.
7. 결론
엑셀은 2025년 현재 VBA, Office Script, 내장 파이썬, Power Fx 등 다층적 확장 API를 제공한다. 이를 활용하면 GPT-4 Turbo를 셀 함수 수준으로 통합할 수 있다.
- 소규모 자동화 → VBA가 가장 저비용이다.
- 웹 기반 협업 → Office Script + Power Automate가 유연하다.
- 데이터 과학 팀 → Python in Excel이 최적이다.
- 기업 배포 표준화 → Custom Function Add-in이 권장된다.
각 방식의 보안 요구 사항, 예산, 운영 인력을 고려해 도입하면 된다. GPT API를 엑셀에 심층 결합함으로써, 반복적 데이터 가공·보고서 작성 시간을 최대 60 %까지 단축할 수 있다고 한다.