엑셀 x 네이버 파파고 API | 파파고 번역 함수 만들기(PapagoTranslate 함수)
엑셀 파파고 번역 함수 만들기 목차 바로가기
영상 강의
📣중요 알림
24년 2월 29일부로 개발자센터의 파파고 API 무료 서비스가 중단되었음을 안내드립니다.
파파고 API 지원 종료 안내 [24.2.29.예정] - 공지사항 (naver.com)
앞으로 파파고 API는 네이버 클라우드 서비스에서 유료로 이용 가능합니다.
자세한 이용 방법은 아래 링크를 참고해주세요.
Papago Translation - AI Services - NAVER Cloud Platform 네이버 클라우드 플랫폼 (ncloud.com)
파파고 무료 API의 서비스 종료로 인해, 예제파일 제공도 함께 중단됨을 알려드립니다. 감사합니다.
홈페이지에 올려드린 GoogleTranslate 함수를 사용하면
사용량 제한 및 API 발급 없이도 전 세계 109개 언어를 편리하게 번역할 수 있습니다.

PapagoTranslate 함수 전체 명령문
엑셀 파파고 번역함수인 PapagoTranslate 함수의 전체 VBA 코드입니다. 코드를 복사한 뒤, 아래 적어드린 순서에 따라 매크로 편집기에 붙여넣기 후, 네이버 개발자센터에서 발급받은 API키와 보안키를 입력하면 월 최대 10만자를 실시간으로 번역할 수 있습니다.
Function PapagoTranslate(OriginalText, sFrom As String, sTo As String) As String '----------------------------------------- '네이버 개발자 센터에서 발급받은 API키와 보안키를 입력합니다. '네이버 개발자 센터 : https://developers.naver.com/ '----------------------------------------- Dim sID As String: sID = "xxxxxxxxx" '<- API키를 입력하세요. Dim sSecret As String: sSecret = "xxxxxxxxxx" '<- 보안키를 입력하세요. '----------------------------------------- Dim URL As String Dim Query As String Dim vArray As Variant Dim objHTML As Object Dim sResult As String URL = "https://openapi.naver.com/v1/papago/n2mt" Query = "source=" & sFrom & "&target=" & sTo & "&text=" & OriginalText ReDim vArray(0 To 3) vArray(0) = Array("User-Agent", "curl/749.1") vArray(1) = Array("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8") vArray(2) = Array("X-Naver-Client-Id", CStr(sID)) vArray(3) = Array("X-Naver-Client-Secret", CStr(sSecret)) Set objHTML = GetHttp(URL, Query, False, vArray) sResult = objHTML.body.innerHTML sResult = Splitter(sResult, "translatedText"":""", """,""engineType") If sResult = "" Then sResult = Splitter(sResult, "errorMessage"":""", """,""errorCode") PapagoTranslate = sResult End Function Function GetHttp(URL As String, Optional formText As String, Optional isWinHttp As Boolean = False, Optional RequestHeader As Variant) As Object '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ GetHttp 함수 '▶ 웹에서 데이터를 받아옵니다. '▶ 인수 설명 '_____________URL : 데이터를 스크랩할 웹 페이지 주소입니다. '_____________formText : Encoding 된 FormText 형식으로 보내야 할 경우, Send String에 쿼리문을 추가합니다. '_____________isWinHttp : WinHTTP 로 요청할지 여부입니다. Redirect가 필요할 경우 True로 입력하여 WinHttp 요청을 전송합니다. '_____________RequestHeader : RequestHeader를 배열로 입력합니다. 반드시 짝수(한 쌍씩 이루어진) 개수로 입력되어야 합니다. '▶ 사용 예제 'Dim HtmlResult As Object 'Set htmlResult = GetHttp("https://www.naver.com") 'msgbox htmlResult.body.innerHTML '############################################################### Dim oHTMLDoc As Object: Dim objHTTP As Object Dim i As Long: Dim blnAgent As Boolean: blnAgent = False Dim sUserAgent As String: sUserAgent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Mobile Safari/537.36" Application.DisplayAlerts = False If Left(URL, 4) <> "http" Then URL = "http://" & URL Set oHTMLDoc = CreateObject("HtmlFile") If isWinHttp = False Then Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") Else Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") End If objHTTP.setTimeouts 3000, 3000, 3000, 3000 objHTTP.Open "POST", URL, False If Not IsMissing(RequestHeader) Then Dim vRequestHeader As Variant For Each vRequestHeader In RequestHeader Dim uHeader As Long: Dim Lheader As Long: Dim steps As Long uHeader = UBound(vRequestHeader): Lheader = LBound(vRequestHeader) If (uHeader - Lheader) Mod 2 = 0 Then GetHttp = CVErr(xlValue): Exit Function For i = Lheader To uHeader Step 2 If vRequestHeader(i) = "User-Agent" Then blnAgent = True objHTTP.setRequestHeader vRequestHeader(i), vRequestHeader(i + 1) Next Next End If If blnAgent = False Then objHTTP.setRequestHeader "User-Agent", sUserAgent objHTTP.send formText With oHTMLDoc .Open .Write objHTTP.responsetext .Close End With Set GetHttp = oHTMLDoc Set oHTMLDoc = Nothing Set objHTTP = Nothing Application.DisplayAlerts = True End Function Function Splitter(v As Variant, Cutter As String, Optional Trimmer As String) '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ Splitter 함수 '▶ Cutter ~ Timmer 사이의 문자를 추출합니다. (Timmer가 빈칸일 경우 Cutter 이후 문자열을 추출합니다.) '▶ 인수 설명 '_____________v : 문자열입니다. '_________Cutter : 문자열 절삭을 시작할 텍스트입니다. '_________Trimmer : 문자열 절삭을 종료할 텍스트입니다. (선택인수) '▶ 사용 예제 'Dim s As String 's = "{sa;b132@drama#weekend;aabbcc" 's = Splitter(s, "@", "#") 'msgbox s '--> "drama"를 반환합니다. '############################################################### Dim vaArr As Variant On Error GoTo EH: vaArr = Split(v, Cutter)(1) If Not IsMissing(Trimmer) Then vaArr = Split(vaArr, Trimmer)(0) Splitter = vaArr Exit Function EH: Splitter = "" End Function
PapagoTranslate 함수 사용방법
네이버 개발자센터에 가입하면 네이버 ID당 최대 10개의 API를 등록할 수 있습니다. 파파고 번역 API는 애플리케이션당 10,000자/일를 번역할 수 있습니다. 따라서 1개 계정으로 모두 파파고 번역 API 사용시, [100,000자/일] 을 번역할 수 있습니다.
- 아래 링크로 이동하여 네이버 개발자센터에 가입합니다. 기존 네이버 회원이시라면 누구나 무료로 가입할 수 있습니다. (실명인증 필요)

네이버 개발자 센터로 이동 후 회원가입합니다. - 네이버 개발자센터에 가입하면 상단에 [Application] 탭이 있습니다. [Application] - [애플리케이션 등록]으로 이동합니다.

개발자센터에서 새로운 애플리케이션을 등록합니다. - 아래 순서에 따라 새로운 애플리케이션을 등록합니다.

각 항목에 값을 입력 후, [등록하기] 버튼을 클릭합니다. 항목 설명 애플리케이션 이름 애플리케이션 이름을 입력합니다. (예: 내 파파고 API, 등..) 사용 API Papago번역 API를 선택합니다. 비로그인 오픈 API 서비스 환경 환경 : WEB 설정 선택
웹 서비스 URL : https://naver.com - 등록하기 버튼을 누르면 파파고번역 API 등록이 완료됩니다.
3-2. 파파고 번역 API키 발급받기
등록한 API의 'API키'와 '보안키'를 확인하는 방법을 알아보겠습니다.
- 개발자센터 상단의 [Application] - [내 애플리케이션]으로 이동합니다.

내 애플리케이션 페이지로 이동합니다. - Application 목록에서 방금전에 등록한 애플리케이션을 선택합니다.

Application 목록에서 파파고 번역 API 를 선택합니다. - [개요] 페이지에서 발급받은 API 의 키와 보안키를 확인할 수 있습니다.

API키와 보안키를 확인할 수 있습니다. 오빠두Tip : [보기] 버튼 또는 [재발급] 버튼을 누르면 보안키를 초기화 할 수 있습니다.
3-3. 엑셀 파일에 파파고번역 함수 추가하기
- 새통합문서를 추가합니다. 엑셀 개발도구 - VisualBasic 버튼을 클릭하여 매크로편집기를 실행합니다. 만약 엑셀 개발도구가 보이지 않을 경우 아래 링크를 참고하여 개발도구를 활성화합니다.
오빠두Tip : 또는 단축키 Alt + F11 키를 눌러 매크로편집기를 빠르게 실행할 수도 있습니다.
- [삽입] - [모듈]을 클릭해서 새로운 모듈을 추가합니다.

매크로 편집기에서 새로운 모듈을 추가합니다. - 추가한 모듈 안으로 위에 적어드린 PapagoTranslate 함수 전체 명령문을 복사하여 붙여넣기 합니다.

PapagoTranslate 명령문을 복사한 뒤, 모듈에 붙여넣기 합니다. - 개발자 센터에서 발급받은 API키와 보안키를 명령문 안에 입력합니다.

발급받은 API키와 보안키를 입력합니다. - 엑셀 시트로 이동한 뒤, 아래 함수를 셀 안에 입력합니다.
=PapagoTranslate("안녕하세요?","ko","en")

시트로 이동한 뒤, PapagoTranslate 함수를 입력합니다. - PapagoTranslate 함수가 올바르게 동작하는 것을 확인할 수 있습니다.

입력한 문장이 실시간으로 번역됩니다.
파파고 번역 함수는 아래와 같이 간단히 사용할 수 있습니다. 만약 매일 10만자 이상 대량으로 번역하거나, 파파고 번역에서 지원하지 않는 다른 언어를 번역해야 할 경우 홈페이지에서 제공해드리는 GoogleTranslate 함수 추가기능을 사용해보세요.
- 한국어에서 영어로 번역하기
=PapagoTranslate("안녕하세요?","ko","en")
'결과값 : Hello?오빠두Tip : 파파고번역 함수는 언어감지 기능을 기본으로 제공하지 않으며, 언어감지를 사용하려면 언어 감지 API를 추가로 등록해서 사용합니다. - 셀 안에 입력된 문장을 영어에서 한국어로 번역하기
'A1 : Welcome! It's really happy to see you here!
=PapagoTranslate(A1,"en","ko")
'결과값: 환영합니다! 여기서 당신을 보니 정말 기쁘군요! - 여러 범위안에 입력된 문장을 다른 언어로 번역하기
'A1: 안녕하세요
'B1: 만나서 반갑습니다.
'C1: 즐거운 하루 보내세요.
=PapagoTranslate(Concatenate(A1,B1,C1),"ko","en")
'결과값: Hello, nice to meet you. Have a nice day.
라이브 강의 전체영상도 함께 확인해보세요!
위캔두 회원이 되시면 매주 오빠두엑셀에서 진행하는 라이브강의 풀영상을 확인하실 수 있습니다.
엑셀 VBA로 여러 프로그램을 제작할 때, VBA에서 제공하는 Application.WorkSheetFunction 을 사용하면 엑셀에서 제공하는 모든 함수를 VBA로 편리하게 입력할 수 있습니다.
- 예제파일에서 매크로 편집기를 실행합니다. 이후 Main 모듈로 이동한 후, Test 라는 명령문을 추가합니다.
Sub Test() '테스트 명령문을 추가합니다. End Sub

모듈 안에 Test 라는 명령문을 추가합니다. - 이후 명령문 안에 Application.WorkSheetFunction을 입력 후, 뒤에 .(점)을 입력하면 사용가능한 함수 목록이 출력됩니다.

명령문 안에 Application.WorkSheetFunction. 을 입력하면 함수 목록이 표시됩니다. 오빠두Tip : 매크로 편집기는 기본으로 자동완성을 지원합니다. 예를들어, Application.Work 까지만 입력하면 WorkSheetFunction이 목록에 출력되고, 원하는 항목 선택 후 키보드 Tab 키를 누르면 코드가 자동으로 완성됩니다. - 사용할 함수로 VLOOKUP 함수를 입력합니다.

VLOOKUP 함수를 입력합니다. - VLOOKUP 함수를 입력하면 사용할 인수 목록이 표시됩니다. 입력되는 인수는 기존 VLOOKUP 함수와 동일합니다. 이번 강의에서는 "태국어"라는 값을 설정시트의 표에서 찾아 메시지박스로 출력하겠습니다.
'찾을값 : "태국어" '찾을범위 : Sheet3.Range("A4:C17") -> Sheet3은 설정시트임 '열번호 : 2 '일치옵션 : 0 (정확히일치) MsgBox Application.WorksheetFunction.VLookup("태국어", Sheet3.Range("A4:C17"), 2, 0)
- Test 명령문을 선택 후 키보드 F5키를 누르거나 매크로 편집기 상단의 재생버튼(▶)을 클릭하면 태국어의 언어코드인 "th"가 메시지박스로 출력됩니다.

태국어의 언어코드가 메시지박스로 표시됩니다.
파파고 번역 API 언어코드 표
파파고 번역 API에서 지원하는 13개 언어의 각 언어코드는 아래 표와 같습니다. 번역 가능한 원본언어, 목적언어 현황은 아래 Papago 번역 API 레퍼런스 페이지를 참고하세요.
| 언어 | 언어코드 |
| ko | 한국어 |
| en | 영어 |
| ja | 일본어 |
| zh-CN | 중국어 간체 |
| zh-TW | 중국어 번체 |
| vi | 베트남어 |
| id | 인도네시아어 |
| th | 태국어 |
| de | 독일어 |
| ru | 러시아어 |
| es | 스페인어 |
| it | 이탈리아어 |
| fr | 프랑스어 |

다시 해보니 빠르게 움직이긴 하는데.. 번역이 안됩니다.. 번역이 되었던것도 다시 적용하면 번역이 사라지네요..ㅠㅠ 파파고랑 연동이 끊어진것인가 싶어 모듈로 들어가 봐도 알려주신 그대로인거같은데... 왜 이러는 걸까요 ㅠㅠ
아래 게시글 답변을 한번 확인해보시겠어요?
https://www.oppadu.com/question/?uid=21114&mod=document&pageid=1
감사합니다.
PapagoTranslate 매크로 명령문 중간에 F9키를 눌러 중단점을 설정하신 뒤,
F8키로 단계별로 실행하면서 명령문에 잘못된 부분이 없는지 한번 확인해보시겠어요?^^
감사합니다.
혹시 유료 사용 시 에는 다른 코드를 사용해야 하는 건가요?
API 유료와 무료 차이는 사용량만 다르고 모두 동일합니다.
만약 실행 도중 오류가 발생한다면, 오류가 발생한 부분 및 앞 부분에서 잘못된 내용이 없는지 한번 디버깅해보세요.
원문이 여러줄일 경우 파파고 API 결과값으로 어떻게 반환되는지 우선 확인해보시고, 코드를 적절히 수정해보세요 ^^
VBA에서 줄바꿈은 vbNewLine 또는 vbCrLf 또는 Chr(10) 입니다. Splitter로 줄바꿈을 나눈 후 번역 -> 결과값을 받아오거나, 결과값을 각 줄로 나누는 방법으로 구현해보세요.
함수 문제가 아닌 설정 문제로 보입니다. 엑셀 - 옵션에서 자동채우기 설정을 변경해보세요.
무료/유료 차이는 Quota 제한만 다르고 사용법은 동일합니다. (무료 Plan에서는 Quote 제한 초과 시, 오류메시지 출력)
출력되는 안내메시지를 참고하여 잘못된 부분은 없는지 한번 확인해보세요.
https://naver.github.io/naver-openapi-guide/errorcode.html
https://developers.naver.com/docs/nmt/reference/
그리고 완성파일을 받아서 사용했는데 PapagoTranslate(C7,"ko","en") 함수가 벨류 에러가 뜹니다. 번역시트에 행추가를 해보니 오류가 나고요..
많은 양을 번역해야 하는데 보안상 구글은 사용이 불가하고요... 방법이 없을까요?
매크로편집기에서
이전 부분에 Stop을 추가한 후 디버깅해보시길 바랍니다.
코드에는 이상이 없으므로, API키가 잘못되거나 값이 잘못되는 등 다양한 원인이 있을 수 있습니다.
코드 실행 과정에서 발생하는 모든 문제에 대해 답변을 드리기 어려운 점 양해부탁드리며, 세세한 오류는 직접 디버깅하여 해결하셔야 합니다.
한가지 질문이 있습니다. 구글사용때는 셀 안의 전체 내용이 번역 됐었느데요, 파파고의 경우 셀안의 첫줄만 번역이 되고 나머지는 번역이 안되네요. 저와 유사한 질문에 VBA수정을 해보라고 말씀을 하셨는데요 제가 너무 초짜라 어떻게 수정을 해야하는건지 모르겠습니다. VBA수정을 하는 방법을 배우기 위한 강의 Link를 알려주실수 있으실지요? 염치없이 부탁드려 죄송합니다.
오늘도 좋은 하루 되세요~
아래 VBA 기초 마스터 클래스 강의를 확인해보세요.
https://www.oppadu.com/%ec%97%91%ec%85%80-live-101%ea%b0%95/
감사합니다.