
OpenAI의 GPT-3를 엑셀과 연동하면 함수 정의, 데이터 요약, 제품 설명 작성 등 다양한 용도로 활용할 수 있는 콘텐츠 생성 도구를 손쉽게 만들 수 있습니다. OpenAI에서는 GPT-3 및 GPT-3.5 모델을 통해 텍스트 생성 기능을 제공하는데요. 'text-davinci-003' 같은 초기 GPT-3 모델은 다양한 텍스트 생성 작업에 널리 사용되었지만, 2024년 1월부터 지원이 중단되었습니다. 대신 OpenAI는 대화형 작업에 최적화되어 있고 채팅 기반 형식을 따르는 GPT-3.5(예: gpt-3.5-turbo) 모델을 선보였습니다.
이번 튜토리얼에서는 'gpt-3.5-turbo' 모델을 엑셀에 통합하여, 사용자가 입력한 프롬프트를 기반으로 콘텐츠를 자동으로 생성해 주는 도구를 만드는 방법을 단계별로 안내합니다.
1단계: OpenAI 계정 설정 후 API 키 발급받기
OpenAI의 GPT-3 API를 사용하려면 먼저 본인의 OpenAI 계정에서 API 키를 발급받아야 합니다.
- 계정이 없다면 OpenAI 웹사이트에서 회원가입 후 키를 발급받으세요.
- 이미 계정이 있다면 OpenAI 계정에 로그인합니다.
- Dashboard(대시보드) >> API Key 선택 >> Create new secret key 클릭합니다.
- Create new secret key 창에서:
- 키 이름(Name)을 지정하고 >> 권한(Permissions)을 선택한 뒤 >> Create secret key를 클릭합니다.

- Save your key 대화상자에서:
- 생성된 API 키를 복사(Copy)하여 안전한 곳에 보관하세요. 이 키는 API 요청 인증에 사용되며, 한 번 생성된 후에는 다시 확인할 수 없습니다.
- Done을 클릭하여 완료합니다.

API 키는 절대 공개적으로 공유하거나 클라이언트 측 코드에 노출하지 마세요.
2단계: 엑셀에 VBA 코드 삽입하기
이 단계에서는 프롬프트를 GPT-3에 전송하고 응답을 받아오는 VBA 코드를 작성합니다.
- 개발 도구(Developer) 탭으로 이동 >> Visual Basic을 선택합니다.
- VBA 편집기에서 삽입(Insert) >> 모듈(Module)을 선택합니다.
- 모듈에 아래 VBA 코드를 입력하여 UDF(사용자 정의 함수)를 만듭니다.

VBA 코드:
Private Const API_KEY As String = "Your_OpenAI_API_Key" 'Replace your OpenAI API key.
' Function to call OpenAI API
Function GenerateContent(Prompt As String) As String
On Error GoTo ErrorHandler
Dim Http As Object
Dim response As String
' Create HTTP object
Set Http = CreateObject("MSXML2.XMLHTTP.6.0")
' Set up request headers and endpoint
Http.Open "POST", "https://api.openai.com/v1/chat/completions", False
Http.setRequestHeader "Content-Type", "application/json"
Http.setRequestHeader "Authorization", "Bearer " & API_KEY
' Prepare the JSON payload for GPT-3.5-turbo
Dim jsonPayload As String
jsonPayload = "{""model"": ""gpt-3.5-turbo"", ""messages"": [{""role"": ""user"", ""content"": """" & Prompt & """"}], ""max_tokens"": 200}"
' Send the request
Http.send jsonPayload
' Get the response
response = Http.responseText
' Parse the JSON response
Dim jsonResponse As Object
Set jsonResponse = JsonConverter.ParseJson(response)
' Return the content of the response text
GenerateContent = jsonResponse("choices")(1)("message")("content")
Exit Function
ErrorHandler:
GenerateContent = "Error: " & Err.Description
End Function
- "Your_OpenAI_API_Key" 부분을 실제 발급받은 API 키로 교체하세요.
코드 설명:
- Function GenerateContent(prompt As String): 사용자가 입력한 프롬프트를 매개변수로 받는 사용자 정의 함수입니다.
- HTTP 요청 설정:
- HTTP 객체 생성: MSXML2.XMLHTTP를 사용해 요청을 전송합니다.
- 요청 헤더 설정: Content-Type을 JSON으로 지정하고, Authorization 헤더에 API 키를 포함시킵니다.
- JSON 페이로드: 모델 이름, 사용자 프롬프트, 최대 토큰 수를 담은 JSON 객체를 생성합니다.
- 요청 전송: JSON 페이로드와 함께 HTTP POST 요청을 OpenAI API 엔드포인트로 보냅니다.
- 응답 처리: 응답을 받아 JSON 파서(VBA-JSON)로 파싱한 후, API 응답에서 생성된 콘텐츠를 추출합니다.
- 결과 반환: 함수가 생성된 텍스트를 반환하여 엑셀 셀에 표시합니다.
3단계: JSON 파싱 라이브러리 설치하기
엑셀은 기본적으로 JSON 파싱을 지원하지 않기 때문에, GPT-3의 JSON 응답을 처리하려면 GitHub에서 VBA-JSON 라이브러리를 다운로드해야 합니다.
- GitHub에서 JsonConverter.bas 파일을 다운로드합니다.
- VBA 편집기에서 파일(File) 탭 >> 파일 가져오기(Import File)를 선택합니다.

- 가져오기 창에서 JsonConverter.bas 파일을 선택하여 프로젝트에 추가합니다.

참조 라이브러리 활성화:
Microsoft Scripting Runtime 참조를 반드시 활성화해야 합니다. JsonConverter 라이브러리가 JSON 데이터 구조를 관리할 때 Dictionary 개체에 의존하기 때문입니다.
- 도구(Tools) 탭 >> 참조(References)를 선택합니다.
- 사용 가능한 참조(Available References) 목록에서 Microsoft Scripting Runtime에 체크 >> 확인(OK)을 클릭합니다.

4단계: 스크립트 실행 후 콘텐츠 생성기 사용하기
- 코드를 저장(Save)하고 워크시트로 돌아갑니다.
- 시트에 GPT-3가 응답할 프롬프트를 입력합니다.
- B2 셀에 아래 수식을 입력합니다.
이 수식은 A2 셀의 프롬프트를 기반으로 GPT-3.5 turbo를 통해 콘텐츠를 생성하고, 그 결과를 B2 셀에 반환합니다.
실행 결과:

마무리
위 단계를 따라 하면 GPT-3를 활용한 엑셀용 콘텐츠 생성 도구를 완성할 수 있습니다. 이 도구를 활용하면 시간을 절약하고 업무 흐름을 효율적으로 개선할 수 있습니다. 아이디어 도출, 초안 작성, 콘텐츠 제작 과정에 지능형 자동화를 더하는 데 큰 도움이 될 것입니다. 다만 OpenAI의 GPT API는 무료가 아니며, API 사용량에 따라 토큰 기반으로 비용이 청구되므로 예산 범위 내에서 사용량을 꾸준히 모니터링하는 것이 좋습니다.