엑셀 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 | 프랑스어 |