本ページはプロモーションが含まれています
外国人と仕事をしている方ってたくさんいますよね。もちろん人によって外国語が得意だったり、苦手だったり。外国語の苦手なわたしの強力な仲間が「Google翻訳」です。この記事ではEXCELに自動でGoogle翻訳してくれる関数を追加する方法を紹介します
参考にさせていただきました
まず注意点です。このVBAコードは完全オリジナルではありません。ほかのサイトで紹介されていたVBAコードをベースに作成しています。
参考にさせていただいたサイトはこちらです
ありがとうございました <m(__)m>
個人DX/RPA 業務の自動化の教科書|ゆるけみ
パソコンスキルの教科書
Google翻訳する関数を追加する
VBAを使ったことがない方、こちらで紹介しています。参考にしてくださいね。
【EXCEL】EXCEL VBAの始め方&保存方法 開発タブを表示
コードの入力は標準モジュール
EXCELを開いたら、シート名を右クリック→コードの表示
「挿入」→「標準モジュール」
コードをコピペ
あとは下記コードをコピペして下さいね
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(翻訳したいセル, 翻訳前の言語, 翻訳後の言語,翻訳停止?)
入力例はこうなります
入力例を参考にして紹介します
翻訳したいセル:A4
はOKですよね
翻訳する言語コードとは?
大事なのが翻訳前の言語、翻訳後の言語の指定方法です
使う機会が多いと思われる言語コードはこちらです
それぞれダブルクォーテーションで括って指定して下さい
日本語 | jp |
英語 | en |
ドイツ語 | de |
イタリア語 | it |
スペイン語 | es |
フランス語 | fr |
中国語(簡体) | zh-CN |
中国語(繁体) | zh-TW |
広東語 | yue |
タイ語 | th |
韓国語 | ko |
言語コードの調べ方
上の表にない言語に翻訳したいときは下記の方法で調べられます
Google翻訳を開いて、日本語からベトナム語へ翻訳する言語コードの調べ方の例です
&text=の前の〇〇が言語コードですよ
遅いというのがデメリット
追加したGoogle翻訳してくれる関数はとっても便利ですが、デメリットが遅いということです。少ない翻訳量であれば問題ありませんが、関数の使用数が増えるほどに遅さがグレードアップしていくんですよ。そこで、このデメリットの対策が関数の一番最後の引数です。
忘れちゃってるかもしれないのでもう一度。
=@GoogleTranslate(翻訳したいセル, 翻訳前の言語, 翻訳後の言語,翻訳停止?)
最後の「翻訳停止?」という引数です。
さきほどコピペしたコードをそのまま使うならここに「1」を入力するとGoogle翻訳を実行しません。
つまり大きなファイルを編集するときのスピードダウンがありません。もちろん、ここに直接「1」と入れるのではありません。下記のようにセルを指定するのがおすすめです。Google翻訳関数の入ったセルをコピーして使いやすいように$を使って絶対参照にしておくのがGoodです。
このようにC1のセルに「1」を入力したら、Google翻訳関数がすべて停止しました。編集中は停止させておいて、最後に「1」を消してやれば一気に翻訳できますね。
この機能ですが、他の方法でも可能です。「数式」→「計算方法の設定」→「手動」で、関数の計算を停止することができます。自分だけの使用であれば、その方法でもよいのですが、この方法を知らない方が多いんですね。
翻訳停止?の変更の仕方
「翻訳停止?」を他の表記に変更したい場合の例です。「翻訳停止?」を「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 プルダウンの作り方 リストから選択するやつです♪
まとめ
ドラえもんの「翻訳こんにゃく」の実現に近いところまできていますよね。すごい時代に生まれたことを感謝しなきゃね(^_-)-☆
当ブログのトップページはこちらです
アラフィフ生産技術の日常
ブックマークして頂けると嬉しいです
よろしくお願いいたします
コメント