Excelで自動翻訳したい
Microsoft Excelで、文章を自動翻訳したいと思ったことはありませんか?シート内に日本語以外の言語で文章が入力されていて、いちいち翻訳サイトやアプリを起動するのが面倒だというシーンも少なくないですよね。この場合は、Excelの翻訳機能を使用したりマクロを使って翻訳を行ってみましょう。
この記事では、Excelで自動翻訳する方法をご紹介していきます。
Excelで自動翻訳する方法
※初回使用時は「インテリジェントサービスを使用しますか?」というダイアログボックスが表示されるので、「オンにする」をクリックしましょう。これで、翻訳ツールが使用可能になります。
また、翻訳ツールウィンドウで正しく翻訳を行えない場合は「リサーチ」機能が動作します。リサーチウィンドウからは対象の単語や文書を指定して、翻訳を行うことができますよ。これらの翻訳ツールはExcelだけではなくWordやOutlookにも搭載されているので、それらのアプリケーションでも同様の方法で翻訳ツールを起動・翻訳することができますよ。
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
あとは「=GoogleTranslate(対象セル,現在の言語,翻訳したい言語)」の数式を入力すれば、セルの翻訳ができますよ。上記の例でB2セルを翻訳するなら「=GoogleTranslate(B2, “en”, “ja”)」のように入力すればOKです。
もしマクロが正しく機能しない場合は、下記リンク先の記事を参考にしてマクロを有効化してみてくださいね。