Excelで英文を自動翻訳したいときがあります。
このとき自動翻訳をしたいときGoogleスプレッドシートでは、標準実装されていますが、MicroSoft Office Excelでは実装されていません。
つまりExcelでは通常、GoogleTranslateは使えないのです。
しかしExcelの機能を上手く活用すれば、Microsoft Office ExcelでもGoogleTranslateを使うことができます。
そこでExcelでGoogleTranslate関数を使えるようにする方法を紹介します。
目次
VBAをIE操作していGoogle翻訳する方法の上位互換
本ページではVBAでInternet Explorerを使ってGoogle翻訳を実行する方法を紹介してきました。
上記でもGoogle翻訳は使用可能ですが、Internet Explorerは2022年でサービス終了というだけではなく、処理が不安定というデメリットもありました。
したがって、このページで紹介する方法は、上記のページの内容の上位互換と言えます。
VBAを活用してExcel関数として実装させる
このページで紹介するVBAプログラムをFunctionプロシージャとして設定しておくと、以下のGoogleTranslate関数によって自動翻訳させることができます。
– 引数1:A2 セルの指定
– 引数2:”en” 現在の言語(enは英語)
– 引数3:”ja” 翻訳したい言語(jaは日本語)
翻訳結果は、以下のように出力されます。
上記のように翻訳させることができます。
翻訳タイムラグは1セルあたり0.5~1.0秒
今回使う方法と、翻訳タイムラグは一つのセルあたり0.5~1.0秒かかります。
この程度のタイムラグであれば、仕事に大きな影響を及ぼすものではないと思います。
ただし複数セルをまとめてGoogleTranslate関数を使うと翻訳すると、翻訳のタイムラグが発生することがあります。
GoogleTranslate関数を実装したExcelをダウンロードする
このページで紹介しているGoogleTranslate関数を実装したExcelファイル(VBAを実装したファイル)をすぐに使いたい人は、以下のフォームからダウンロードできます。
登録したメールアドレスへ「VBAプログラムが含まれたエクセル」を送信します。
本プログラムの内容をそのまま使用可能です。ぜひお仕事にお役立てください。
Excel関数としてGoogleTranslateを使う方法|作成手順
ExcelでGoogleTranslateを関数として使用するための手順を紹介します。
手順1. VBAプログラムをExcelに設定する
以下のVBAを
VBAのプログラムソース解説
今回紹介するプログラムの概要は以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
Option Explicit Public Function GoogleTranslate(rng As Range, translateFrom As String, translateTo As String) As String '変数設定 Dim param As String, trans As String, url As String 'HTTPリクエストの設定 Dim objHTTP As Object Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 'セルの値を取得 param = rng.Value 'HTTPリクエストのURL設定 url = "https://translate.google.pl/m?hl=" & translateFrom & "&sl=" & translateFrom & "&tl=" & translateTo & "&ie=UTF-8&prev=_m&q=" & EncodeURL(param) 'HTTPリクエスト objHTTP.Open "GET", url, False objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" objHTTP.send ("") 'HTTPリクエストのレスポンステキストを取得 Dim oHtml As New MSHTML.HTMLDocument Set oHtml = New MSHTML.HTMLDocument oHtml.body.innerHTML = objHTTP.responseText '翻訳結果を取得 Dim transtext As String transtext = oHtml.getElementsByClassName("result-container")(0).innerText '翻訳結果があればClean関数を実行、なければエラー出力 If transtext <> "" Then GoogleTranslate = Clean(transtext) Else GoogleTranslate = CVErr(xlErrValue) End If End Function '翻訳前のテキストのエンコード用に変換 Function ConvertToGet(str As String) str = Replace(str, " ", "+") str = Replace(str, vbNewLine, "+") str = Replace(str, "(", "%28") str = Replace(str, ")", "%29") ConvertToGet = str End Function '翻訳後のテキスト内の文言を変換 Function Clean(str As String) str = Replace(str, """, """") str = Replace(str, "%2C", ",") str = Replace(str, "'", "'") Clean = str End Function '日本語をURLエンコード Function EncodeURL(ByVal str As String) As String EncodeURL = Application.WorksheetFunction.EncodeURL(str) End Function '関数の説明 Sub RegisterGoogleTransleFormula() '関数名の設定 Dim strFunc As String strFunc = "GoogleTranslate" '関数の説明 Dim strDesc As String strDesc = "GoogleTranslate関数" & vbNewLine & vbNewLine & _ "英語から日本語に翻訳したい場合、GoogleTranslate(A1,""en"",""ja"")" & vbNewLine & vbNewLine & _ "日本語から英語に翻訳したい場合、GoogleTranslate(A1,""ja"",""en"")" & vbNewLine & vbNewLine & _ "他の言語を使いたい場合は: https://cloud.google.com/translate/docs/languages/" & vbNewLine & _ "(英語と日本語以外の言語は動作検証できていない)" '関数内の引数の説明 Dim strArgs(0 To 2) As String strArgs(0) = "翻訳したいセルを選択" strArgs(1) = "現在の言語を入力(ex. 英語はen,日本語はja)" strArgs(2) = "翻訳したい言語を入力(ex. 英語はen,日本語はja)" Application.MacroOptions Macro:=strFunc, Description:=strDesc, ArgumentDescriptions:=strArgs, Category:="Custom Category" End Sub |
VBA作成の事前準備
ExcelでVBAを使う方法がよく分からなかったり不安があったりする人は、以下の動画をご覧ください。
入門エクセルマクロの使い方|マクロ作成から実行までを徹底解説
上記の動画の内容は、以下のページで解説をしています。
手順2. GoogleTranslate関数を使う
上記のVBAをExcelに設定することで、以下のエクセル関数を使うことができます。
以下で英語→日本語、日本語→英語の翻訳の実例を見ていきます。
手順2-1. 英語を日本語に翻訳する
=GoogleTranslate(セル, “en”, “ja”)
上記のように入力することで、翻訳したいセルA2を”en”から”ja”に翻訳することができます。
翻訳結果は、以下のように出力されます。
手順2-2. 日本語を英語に翻訳する
上記のように入力することで、翻訳したいセルA2を”ja”から”en”に翻訳することができます。
翻訳結果は、以下のように出力されます。
手順の解説はここまでとなります。
エクセル仕事を効率化する事例
ここではエクセルの翻訳作業を効率化する方法を紹介しました。
しかしこれ以外にもエクセル仕事を効率化する方法は数多く存在します。
以下のページで事例を合わせて紹介していますので、参考にしてみてください。