본문 바로가기
카테고리 없음

엑셀(Excel)에서 GPT를 직접 호출‧운용하는 4가지 실전 구현 가이드

by 매드박오피스 2025. 5. 5.
반응형

GPT-4 Turbo(또는 Azure OpenAI) API를 엑셀 내부에서 호출하여 셀 함수처럼 활용할 수 있는 방법을 정리한다. 각 방법은 설치 난이도, 유지보수, 보안 관점에서 장단점이 분명하다. 조직 상황에 맞춰 선택하도록 권장한다.


목차

  1. 준비 사항 : API 키 관리‧요금 구조 이해
  2. 방법 ① : VBA(Visual Basic for Applications) HTTP 클라이언트
  3. 방법 ② : Office Script + Power Automate 클라우드 플로우
  4. 방법 ③ : Python in Excel 내장 파이썬 모듈
  5. 방법 ④ : Power Fx 사용자 정의 함수(Custom Function)
  6. 보안 · 비용 최적화 체크리스트
  7. 결론

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. 플로우 구성 절차

  1. Office Script → 현재 워크시트 범위 값을 scriptReturn 으로 출력.
  2. Power Automate
    • Excel Online (Business) 커넥터로 스크립트 실행.
    • HTTP 액션으로 GPT API 호출(Bearer @{connectionVariables('OPENAI_KEY')} 사용).
    • 결과를 다시 Excel 테이블에 삽입.
  3. 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)

  1. B1 셀 입력 → =PY( 로 시작하여 파이썬 모드 진입.
  2. 코드 전체 붙여넣기.
# 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))
  1. 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. 보안 · 비용 최적화 체크리스트

  1. Key 저장 위치
    • 로컬 파일 금지. 환경 변수 또는 보안 저장소 사용.
  2. Rate-limit
    • Excel 대량 계산 시 API 동시 호출 폭주 위험. 배치 처리 권장.
  3. 프롬프트 필터링
    • 개인정보·기밀 정보가 포함되지 않도록 RegEx 전처리 또는 DLP 정책 연동.
  4. 캐싱 전략
    • 동일 프롬프트 반복 호출 시 Redis / 로컬 시트 캐시로 비용 30 % 이상 절감 가능.
  5. 감사 로깅
    • 호출 로그를 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 %까지 단축할 수 있다고 한다.

반응형