오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴

엑셀 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 프랑스어
댓글 24
4.9 (14개 평가)
쭈쭈빠나
쭈쭈빠나 2021.08.04 00:09
유용한 자료네요. 영어로 업무를 많이하는데 감사합니다. 꾸벅
CreativeGil
CreativeGil 2021.09.07 02:08
안녕하세요! 유익한 강의 감사합니다. 잘 보고 따라해서 문제 없이 구동은 됩니다만, xlsm 파일이여서 그런건지 엑셀이 엄청 느리게 반응하고 있습니다. 300개 정도 되는 데이터를 입력해서 번역 후에도 엄청 느리네요..휠로 아래로 내려도 1분정도 뒤에 내려가는 듯합니다. xlsx로 변형하면 번역이 안되구요.. xlsm파일은 원래 이렇게 느린 걸까요?;; ㅠㅠ 업무에 편하긴 합니다만, xlsx처럼 빠르게 구동은 안되는 걸까요? 아무쪼록 회신 부탁 드립니다 ㅠㅠ
다시 해보니 빠르게 움직이긴 하는데.. 번역이 안됩니다.. 번역이 되었던것도 다시 적용하면 번역이 사라지네요..ㅠㅠ 파파고랑 연동이 끊어진것인가 싶어 모듈로 들어가 봐도 알려주신 그대로인거같은데... 왜 이러는 걸까요 ㅠㅠ
오빠두엑셀
오빠두엑셀 작성자 2021.09.09 18:36
안녕하세요.
아래 게시글 답변을 한번 확인해보시겠어요?
https://www.oppadu.com/question/?uid=21114&mod=document&pageid=1
감사합니다.
오빠두엑셀
오빠두엑셀 작성자 2021.10.17 20:48
supers 님 안녕하세요.
PapagoTranslate 매크로 명령문 중간에 F9키를 눌러 중단점을 설정하신 뒤,
F8키로 단계별로 실행하면서 명령문에 잘못된 부분이 없는지 한번 확인해보시겠어요?^^
감사합니다.
Glow
Glow 2022.06.14 16:27
진짜 대박 기능입니다. 엑셀신 오빠두님 너무 감사합니다 :)
봉봉이
봉봉이 2022.08.12 18:10
안녕하세요, 똑같이 실행했지만, 실행이 되지 않아 댓글 남깁니다.
혹시 유료 사용 시 에는 다른 코드를 사용해야 하는 건가요?
오빠두엑셀
오빠두엑셀 작성자 2022.08.13 16:59
안녕하세요.
API 유료와 무료 차이는 사용량만 다르고 모두 동일합니다.
만약 실행 도중 오류가 발생한다면, 오류가 발생한 부분 및 앞 부분에서 잘못된 내용이 없는지 한번 디버깅해보세요.
대코
대코 2022.09.03 07:04
덕분에 잘 사용하고 있습니다. 혹시 원문이 여러줄인 경우에 첫줄만 번역이 되는데, 수정할 수 있는 방법이 있나요?
오빠두엑셀
오빠두엑셀 작성자 2022.09.07 16:19
안녕하세요.
원문이 여러줄일 경우 파파고 API 결과값으로 어떻게 반환되는지 우선 확인해보시고, 코드를 적절히 수정해보세요 ^^
VBA에서 줄바꿈은 vbNewLine 또는 vbCrLf 또는 Chr(10) 입니다. Splitter로 줄바꿈을 나눈 후 번역 -> 결과값을 받아오거나, 결과값을 각 줄로 나누는 방법으로 구현해보세요.
eun
eun 2022.12.07 14:53
안녕하세요! 질문이 있어 댓글 남깁니다! 아래로 드래그하면 함수가 연속으로 적용이 안되고 해당 셀 내용만 아래로 내려오는데 다른 방법이 있을까요?
오빠두엑셀
오빠두엑셀 작성자 2022.12.11 19:55
안녕하세요.
함수 문제가 아닌 설정 문제로 보입니다. 엑셀 - 옵션에서 자동채우기 설정을 변경해보세요.
Screenshot_2
chloe75
chloe75 2023.02.11 20:05
안녕하세요. 구글번역보다 파파고번역이 훨씬 매끄러워서 편하게 사용할 방법을 찾고 있었는데 역시 엑셀신 오빠두님께서 해결해 주셨네요. 언제나 감탄하며 보고 있습니다. 감사합니다. 그런데 번역할 용량이 많아 네이버클라우드에서 말씀하신 유료서비스를 결제하고 그 ID와 PW를 받아서 돌려봤는데 실행이 되지 않네요. URL까지는 바꿨는데 또 바꿔야 하는 것이 있는지요?
오빠두엑셀
오빠두엑셀 작성자 2023.02.14 01:38
안녕하세요.
무료/유료 차이는 Quota 제한만 다르고 사용법은 동일합니다. (무료 Plan에서는 Quote 제한 초과 시, 오류메시지 출력)
출력되는 안내메시지를 참고하여 잘못된 부분은 없는지 한번 확인해보세요.
https://naver.github.io/naver-openapi-guide/errorcode.html
https://developers.naver.com/docs/nmt/reference/
욕심없는성공v
욕심없는성공v 2023.03.23 13:28
안녕하세요 잘 따라했는데 값 자체가 공란으로 출력되는 이유가 있을까요?
그리고 완성파일을 받아서 사용했는데 PapagoTranslate(C7,"ko","en") 함수가 벨류 에러가 뜹니다. 번역시트에 행추가를 해보니 오류가 나고요..
많은 양을 번역해야 하는데 보안상 구글은 사용이 불가하고요... 방법이 없을까요?
오빠두엑셀
오빠두엑셀 작성자 2023.03.24 01:07
안녕하세요.
매크로편집기에서

PapagoTranslate = sResult
이전 부분에 Stop을 추가한 후 디버깅해보시길 바랍니다.
코드에는 이상이 없으므로, API키가 잘못되거나 값이 잘못되는 등 다양한 원인이 있을 수 있습니다.
코드 실행 과정에서 발생하는 모든 문제에 대해 답변을 드리기 어려운 점 양해부탁드리며, 세세한 오류는 직접 디버깅하여 해결하셔야 합니다.
ms****
ms**** 2023.07.10 11:56
번역 기능 너무나 유용하게 잘 쓰고 있습니다. 알려주셔서 감사합니다^^ 한국에서는 구글번역 추가기능으로 잘 사용했었는데요, 중국에 와서 구글에 접속이 안되다 보니 PAPAGO를 사용할 수 밖에 없네요.
한가지 질문이 있습니다. 구글사용때는 셀 안의 전체 내용이 번역 됐었느데요, 파파고의 경우 셀안의 첫줄만 번역이 되고 나머지는 번역이 안되네요. 저와 유사한 질문에 VBA수정을 해보라고 말씀을 하셨는데요 제가 너무 초짜라 어떻게 수정을 해야하는건지 모르겠습니다. VBA수정을 하는 방법을 배우기 위한 강의 Link를 알려주실수 있으실지요? 염치없이 부탁드려 죄송합니다.
오늘도 좋은 하루 되세요~
오빠두엑셀
오빠두엑셀 작성자 2023.07.11 15:50
안녕하세요.
아래 VBA 기초 마스터 클래스 강의를 확인해보세요.
https://www.oppadu.com/%ec%97%91%ec%85%80-live-101%ea%b0%95/
감사합니다.