【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう アラフィフ生産技術の日常

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう EXCEL
【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

本ページはプロモーションが含まれています

外国人と仕事をしている方ってたくさんいますよね。もちろん人によって外国語が得意だったり、苦手だったり。外国語の苦手なわたしの強力な仲間が「Google翻訳」です。この記事ではEXCELに自動でGoogle翻訳してくれる関数を追加する方法を紹介します

参考にさせていただきました

まず注意点です。このVBAコードは完全オリジナルではありません。ほかのサイトで紹介されていたVBAコードをベースに作成しています。

参考にさせていただいたサイトはこちらです
ありがとうございました <m(__)m>
個人DX/RPA 業務の自動化の教科書|ゆるけみ
パソコンスキルの教科書

Google翻訳する関数を追加する

VBAを使ったことがない方、こちらで紹介しています。参考にしてくださいね。
【EXCEL】EXCEL VBAの始め方&保存方法 開発タブを表示

コードの入力は標準モジュール

EXCELを開いたら、シート名を右クリック→コードの表示

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

「挿入」→「標準モジュール」

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

コードをコピペ

あとは下記コードをコピペして下さいね

Option Explicit

Public Function GoogleTranslate(rng As Range, translateFrom As String, translateTo As String, offflg As Integer) As String
    '変数設定
    Dim param As String, url As String
    Dim objHTTP As Object
    Dim oHtml As MSHTML.HTMLDocument
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    
    If offflg = 1 Then
        Exit Function
    End If
    
    
    'セルの値を取得
    param = rng.Value
    
    'HTTPリクエストのURL設定
    'url = "https://translate.google.pl/m?hl=" & translateTo & "&sl=" & translateFrom & "&tl=" & translateTo & "&ie=UTF-8&prev=_m&q=" & EncodeURL(param)
    url = "https://translate.google.pl/m?hl=" & translateTo & "&sl=" & translateFrom & "&tl=" & translateTo & "&ie=UTF-8&prev=_m&q=" & EncodeURL(param)
    
    'url = "https://translate.google.com/?hl=" & translateFrom & "&sl=" & translateFrom & "&tl=" & translateTo & "&text=" & param & "&op=translate"
    'HTTPリクエスト
    objHTTP.Open "GET", url, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send ("")
    
    'HTTPリクエストのレスポンステキストを取得
    'Set oHtml = CreateObject("htmlfile")
    'oHtml.body.innerHTML = objHTTP.responseText
    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

Function EncodeURL(ByVal str As String) As String
    EncodeURL = Application.WorksheetFunction.EncodeURL(str)
End Function

Google翻訳関数の使い方

追加したGoogle翻訳関数の入力方法です

=@GoogleTranslate(翻訳したいセル, 翻訳前の言語, 翻訳後の言語,翻訳停止?)

入力例はこうなります

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう
【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

入力例を参考にして紹介します
翻訳したいセル:A4
はOKですよね

翻訳する言語コードとは?

大事なのが翻訳前の言語、翻訳後の言語の指定方法です
使う機会が多いと思われる言語コードはこちらです
それぞれダブルクォーテーションで括って指定して下さい

日本語jp
英語en
ドイツ語de
イタリア語it
スペイン語es
フランス語fr
中国語(簡体)zh-CN
中国語(繁体)zh-TW
広東語yue
タイ語th
韓国語ko

言語コードの調べ方

上の表にない言語に翻訳したいときは下記の方法で調べられます
Google翻訳を開いて、日本語からベトナム語へ翻訳する言語コードの調べ方の例です
&text=の前の〇〇が言語コードですよ

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

遅いというのがデメリット

追加したGoogle翻訳してくれる関数はとっても便利ですが、デメリットが遅いということです。少ない翻訳量であれば問題ありませんが、関数の使用数が増えるほどに遅さがグレードアップしていくんですよ。そこで、このデメリットの対策が関数の一番最後の引数です。

忘れちゃってるかもしれないのでもう一度。

=@GoogleTranslate(翻訳したいセル, 翻訳前の言語, 翻訳後の言語,翻訳停止?)

最後の「翻訳停止?」という引数です。
さきほどコピペしたコードをそのまま使うならここに「1」を入力するとGoogle翻訳を実行しません。
つまり大きなファイルを編集するときのスピードダウンがありません。もちろん、ここに直接「1」と入れるのではありません。下記のようにセルを指定するのがおすすめです。Google翻訳関数の入ったセルをコピーして使いやすいように$を使って絶対参照にしておくのがGoodです。

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

このようにC1のセルに「1」を入力したら、Google翻訳関数がすべて停止しました。編集中は停止させておいて、最後に「1」を消してやれば一気に翻訳できますね。

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

この機能ですが、他の方法でも可能です。「数式」→「計算方法の設定」→「手動」で、関数の計算を停止することができます。自分だけの使用であれば、その方法でもよいのですが、この方法を知らない方が多いんですね。

【VBA】EXCELに全言語対応のGoogle翻訳関数を追加しよう

翻訳停止?の変更の仕方

「翻訳停止?」を他の表記に変更したい場合の例です。「翻訳停止?」を「off」に変更したいならこちらの赤字2か所を変更するだけです。

Public Function GoogleTranslate(rng As Range, translateFrom As String, translateTo As String, offflg As String) As String
    '変数設定
    Dim param As String, url As String
    Dim objHTTP As Object
    Dim oHtml As MSHTML.HTMLDocument
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    
    If offflg = "off" Then
        Exit Function
    End If

on と off をプルダウンで切り替えるようにしておくとわかりやすいですね。下記の記事でやり方を紹介してますよ。

【誰でも簡単】EXCEL プルダウンの作り方 リストから選択するやつです♪

まとめ

ドラえもんの「翻訳こんにゃく」の実現に近いところまできていますよね。すごい時代に生まれたことを感謝しなきゃね(^_-)-☆


当ブログのトップページはこちらです
アラフィフ生産技術の日常
ブックマークして頂けると嬉しいです
よろしくお願いいたします

コメント

タイトルとURLをコピーしました