엑셀 x 네이버 파파고 API | 파파고 번역 함수 만들기 | PapagoTranslate 함수

네이버 파파고 번역 API를 활용한 PapagoTranslate 함수 작성법을 개발자센터 가입부터 최종 완성까지 단계별로 살펴봅니다.

# VBA

작성자 :
오빠두엑셀
최종 수정일 : 2024. 04. 17. 15:41
URL 복사
메모 남기기 : (24)

엑셀 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개 언어를 편리하게 번역할 수 있습니다.

엑셀 GoogleTranslate 번역 함수 썸네일
GoogleTranslate 함수 (엑셀 구글 번역 함수) 다운로드 바로가기

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
오빠두Tip : 아래 적어드린 PapagoTranslate 함수는 출발어와 도착어를 언어코드(예: ko, en, ja, 등..)를 직접 입력해서 사용합니다. 강의에서는 출발어와 도착어의 언어코드를 VLOOKUP 함수로 검색하는 방법으로 작성하였습니다.

PapagoTranslate 함수 사용방법

네이버 개발자센터에 가입하면 네이버 ID당 최대 10개의 API를 등록할 수 있습니다. 파파고 번역 API는 애플리케이션당 10,000자/일를 번역할 수 있습니다. 따라서 1개 계정으로 모두 파파고 번역 API 사용시, [100,000자/일] 을 번역할 수 있습니다.

1. 네이버 개발자 센터 등록하기

  1. 아래 링크로 이동하여 네이버 개발자센터에 가입합니다. 기존 네이버 회원이시라면 누구나 무료로 가입할 수 있습니다. (실명인증 필요)

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

    네이버 API 애플리케이션 등록
    개발자센터에서 새로운 애플리케이션을 등록합니다.
  3. 아래 순서에 따라 새로운 애플리케이션을 등록합니다.
    네이버 API 등록 절차
    각 항목에 값을 입력 후, [등록하기] 버튼을 클릭합니다.

    항목 설명
    애플리케이션 이름 애플리케이션 이름을 입력합니다. (예: 내 파파고 API, 등..)
    사용 API Papago번역 API를 선택합니다.
    비로그인 오픈 API 서비스 환경 환경 : WEB 설정 선택
    웹 서비스 URL : https://naver.com
  4. 등록하기 버튼을 누르면 파파고번역 API 등록이 완료됩니다.
3-2. 파파고 번역 API키 발급받기

등록한 API의 'API키'와 '보안키'를 확인하는 방법을 알아보겠습니다.

  1. 개발자센터 상단의 [Application] - [내 애플리케이션]으로 이동합니다.

    네이버 개발자센터 내 애플리케이션
    내 애플리케이션 페이지로 이동합니다.
  2. Application 목록에서 방금전에 등록한 애플리케이션을 선택합니다.

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

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

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

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

    PapagoTranslate 함수 입력
    시트로 이동한 뒤, PapagoTranslate 함수를 입력합니다.
  6. PapagoTranslate 함수가 올바르게 동작하는 것을 확인할 수 있습니다.
    엑셀 번역 함수
    입력한 문장이 실시간으로 번역됩니다.
    오빠두Tip : 파파고 번역 API는 총 13개 언어를 제공합니다. 파파고에서 제공하는 언어 전체목록은 아래 언어코드표를 확인해주세요.

3-4. 파파고 번역 함수 예제

파파고 번역 함수는 아래와 같이 간단히 사용할 수 있습니다. 만약 매일 10만자 이상 대량으로 번역하거나, 파파고 번역에서 지원하지 않는 다른 언어를 번역해야 할 경우 홈페이지에서 제공해드리는 GoogleTranslate 함수 추가기능을 사용해보세요.

  1. 한국어에서 영어로 번역하기
    =PapagoTranslate("안녕하세요?","ko","en")
    '결과값 : Hello?
    오빠두Tip : 파파고번역 함수는 언어감지 기능을 기본으로 제공하지 않으며, 언어감지를 사용하려면 언어 감지 API를 추가로 등록해서 사용합니다.
  2. 셀 안에 입력된 문장을 영어에서 한국어로 번역하기
    'A1 : Welcome! It's really happy to see you here!
    =PapagoTranslate(A1,"en","ko")
    '결과값: 환영합니다! 여기서 당신을 보니 정말 기쁘군요!
  3. 여러 범위안에 입력된 문장을 다른 언어로 번역하기
    'A1: 안녕하세요
    'B1: 만나서 반갑습니다.
    'C1: 즐거운 하루 보내세요.
    =PapagoTranslate(Concatenate(A1,B1,C1),"ko","en")
    '결과값: Hello, nice to meet you. Have a nice day.
    오빠두Tip : 엑셀 최신버전 사용자는 CONCAT 함수 또는 TEXTJOIN 함수를 사용하면 범위를 직접 지정할 수 있어 더욱 편리합니다.

.

라이브 강의 전체영상도 함께 확인해보세요!

위캔두 회원이 되시면 매주 오빠두엑셀에서 진행하는 라이브강의 풀영상을 확인하실 수 있습니다.


VBA로 VLOOKUP 함수 사용하기

엑셀 VBA로 여러 프로그램을 제작할 때, VBA에서 제공하는 Application.WorkSheetFunction 을 사용하면 엑셀에서 제공하는 모든 함수를 VBA로 편리하게 입력할 수 있습니다.

오빠두Tip : 단, 버전에 따라 지원되는 함수만 사용할 수 있습니다. 예를 들어, 최신 버전에서만 지원되는 함수(예: XLOOKUP 함수, FILTER 함수, 등)는 VBA로 작성하더라도, 이전 버전에서 사용할 수 없습니다.
  1. 예제파일에서 매크로 편집기를 실행합니다. 이후 Main 모듈로 이동한 후, Test 라는 명령문을 추가합니다.
    Sub Test()
    '테스트 명령문을 추가합니다.
    End Sub

    엑셀 VBA 테스트 명령문
    모듈 안에 Test 라는 명령문을 추가합니다.
  2. 이후 명령문 안에 Application.WorkSheetFunction을 입력 후, 뒤에 .(점)을 입력하면 사용가능한 함수 목록이 출력됩니다.
    엑셀 VBA Worksheetfunction
    명령문 안에 Application.WorkSheetFunction. 을 입력하면 함수 목록이 표시됩니다.
    오빠두Tip : 매크로 편집기는 기본으로 자동완성을 지원합니다. 예를들어, Application.Work 까지만 입력하면 WorkSheetFunction이 목록에 출력되고, 원하는 항목 선택 후 키보드 Tab 키를 누르면 코드가 자동으로 완성됩니다.
  3. 사용할 함수로 VLOOKUP 함수를 입력합니다.

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

    엑셀 VBA 매크로 결과
    태국어의 언어코드가 메시지박스로 표시됩니다.

파파고 번역 API 언어코드 표

파파고 번역 API에서 지원하는 13개 언어의 각 언어코드는 아래 표와 같습니다. 번역 가능한 원본언어, 목적언어 현황은 아래 Papago 번역 API 레퍼런스 페이지를 참고하세요.

언어 언어코드
ko 한국어
en 영어
ja 일본어
zh-CN 중국어 간체
zh-TW 중국어 번체
vi 베트남어
id 인도네시아어
th 태국어
de 독일어
ru 러시아어
es 스페인어
it 이탈리아어
fr 프랑스어
4.9 14 투표
게시글평점
24 댓글
Inline Feedbacks
모든 댓글 보기
24
0
여러분의 생각을 댓글로 남겨주세요.x