GoogleTranslate関数
課題・悩み「翻訳できるExcel関数を知りたい」
解決策「Excelでスプレッドシートの機能であるGoogle翻訳の関数(GoogleTranslate関数)を使用する方法」を解説
「Excelでセル内の英文を日本語に翻訳したい」
Googleスプレッドシートには【GoogleTranslate関数】が実装されており、セルの値を自動翻訳できる関数があります。
しかし、Microsoft OfficeのExcelにはセルを自動翻訳する関数はありません。
そこで、ExcelのVBAマクロの機能を使って、Microsoft OfficeのExcelで【セルの英文を日本語に自動翻訳できるGoogleTranslate関数を利用できる】ようにしました。
Excelでセルを自動翻訳できるGoogle Translate関数を実装する方法を解説しています。
GoogleTranslate関数を実装したExcelファイルを配布中。
以下のボタンよりダウンロードください。
GoogleTranslate関数
GoogleTranslate関数Excelファイルの使い方
ダウンロードできる【GoogleTranslate関数のExcelファイル】の使い方は以下の通りです。
GoogleTranslate関数Excelファイルの使い方
- マクロの実行の許可
- GoogleTranslate関数を入力
マクロの実行の許可
Excelファイルを開いたら、マクロの実行を許可してください。
GoogleTranslate関数を入力
翻訳結果を表示させたいセルに【GoogleTranslate】関数を入力してください。
英語を日本語に翻訳する
英語を日本語に翻訳したい場合は、以下のように入力してください。
=GoogleTranslate(B1, "ja", "en")
日本語を英語に翻訳する
日本語を英語に翻訳したい場合は、以下のように入力してください。
=GoogleTranslate(B1, "en", "jp")
セルを翻訳するのに必要な時間
今回Excelに実装したGoogleTranslate関数の翻訳にかかる時間は1つのセルあたり0.5~1.0秒。
そのため、大量のセルでGoogleTranslate関数を使う場合は処理に時間がかかる可能性があるため、ご注意ください。
セルを翻訳するのに必要な時間
- Visual Basic Editorの呼び出し
- 参照設定
- Microsoft HTML Object Libraryをチェック
ExcelにGoogleTranslate関数を実装する方法
ExcelにGoogleTranslate関数の実装する方法は以下の通りです。
ExcelにGoogleTranslate関数を実装する方法
- ExcelでGoogleTranslate関数を利用するVBAマクロのコードの追加
- 【Microsoft HTML Object Library】の追加
- Excel関数の利用
ExcelでGoogleTranslate関数を利用するVBAマクロのコードの追加
Excelの標準モジュールに、以下の【ExcelでGoogleTranslate関数を利用する】VBAマクロのコードを記述します。
Option Explicit
Public Function GoogleTranslate(rng As Range, translateFrom As String, translateTo As String) As String
'変数設定
Dim param As String, url As String
Dim objHTTP As Object, oHtml As Object
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
'セルの値を取得
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)
'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
'翻訳結果を取得
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
【Microsoft HTML Object Library】の追加
次に、Microsoft HTML Object Libraryの追加を行います。
【Microsoft HTML Object Library】の追加
- Visual Basic Editorの呼び出し
- 参照設定
- Microsoft HTML Object Libraryをチェック
- 英語を日本語に翻訳する
- 日本語を英語に翻訳する
Visual Basic Editorの呼び出し
【Alt】→【F11】または【開発】→【Visual Basic】で Visual Basic Editor(VBE:VBAの編集画面)を呼び出します。
参照設定
【ツール】→【参照設定】をクリックします。
Microsoft HTML Object Libraryをチェック
【参照設定】のダイアログから【Microsoft HTML Object Library】を探し、チェックを入れます。
Excel関数の利用
実装したGoogleTranslate関数を利用します。
「=GoogleTranslate(セル, “ja”, “en”)」と「=GoogleTranslate(セル, “en”, “jp”)」の関数でセルの自動翻訳ができます。
Excel関数の利用
- 英語を日本語に翻訳する
- 日本語を英語に翻訳する
英語を日本語に翻訳する
以下の関数を翻訳した文章を表示させたいセルに入力してください。
=GoogleTranslate(B1, "ja", "en")
日本語を英語に翻訳する
以下の関数を翻訳した文章を表示させたいセルに入力してください。
=GoogleTranslate(B1, "en", "jp")
ExcelにGoogleTranslate関数を実装する方法のQ&A
- Excelの翻訳機能を使って、外国語のテキストを自動翻訳する方法はありますか?
-
Excel翻訳では指定したセルのみ翻訳が可能です。 そのため自動翻訳をするには、Excel VBAのマクロ機能を用いる必要があります。 Google翻訳ができるExcelファイルは「#GoogleTranslate関数Excelファイルの使い方」よりダウンロードください。
- Excelの関数を使ってGoogle翻訳を実装する方法はありますか?
-
Excelの標準機能には、Google翻訳ができる関数は実装されていません。 そのため、ExcelのVBAマクロを用いてGoogle翻訳を実装する必要があります。 詳しくは「#GoogleTranslate関数Excelファイルの使い方」をご覧ください。
- Excelで英文を自動翻訳するための関数について知りたいです。
-
Excel関数で英文を自動翻訳するには、Excel VBAマクロで自動翻訳する関数を実装する必要があります。 詳しくは「#ExcelにGoogleTranslate関数を実装する方法」をご覧ください。
ExcelでGoogleTranslate関数を利用するVBAマクロのコードの解説
このVBAコードは、Excelのセルに入力されたテキストをGoogle Translateを使用して翻訳するカスタム関数GoogleTranslateを提供します。この関数は、指定された言語から別の言語にテキストを翻訳します。また、URLエンコードやテキストのクリーニングなどの補助関数も含まれています。
Option Explicit
Public Function GoogleTranslate(rng As Range, translateFrom As String, translateTo As String) As String
'変数設定
Dim param As String, url As String
Dim objHTTP As Object, oHtml As Object
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
'セルの値を取得
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)
'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
'翻訳結果を取得
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
ExcelでGoogleTranslate関数を利用するVBAマクロのコードの解説
- コード実行時の注意点
- コードを実行するために必要な環境
コード実行時の注意点
このコードは、外部のWebサービス(Google Translate)にアクセスして翻訳を行うため、大量のデータを翻訳する場合や、インターネット接続が不安定な場合は処理に時間がかかる可能性があります。
コード実行時の注意点
- Google翻訳関数の定義
- HTTPリクエストの設定
- 翻訳結果の取得
- URLエンコード関数
GoogleがAPIの仕様を変更すると、このコードが正常に動作しなくなる可能性があります。
コードを実行するために必要な環境
VBAエディタの「ツール」メニューから「参照設定」を選択し、Microsoft HTML Object Libraryを追加する必要があります。
コードを実行するために必要な環境
- Google翻訳関数の定義
- HTTPリクエストの設定
- 翻訳結果の取得
- URLエンコード関数
- テキストクリーニング関数
各処理のコードの解説
各処理のコードの解説
- Google翻訳関数の定義
- HTTPリクエストの設定
- 翻訳結果の取得
- URLエンコード関数
- テキストクリーニング関数
Google翻訳関数の定義
Google Translateを使用してテキストを翻訳する主要な関数です。
Public Function GoogleTranslate(rng As Range, translateFrom As String, translateTo As String) As String
...
End Function
HTTPリクエストの設定
Google TranslateのURLを設定し、HTTPリクエストを送信して翻訳結果を取得します。
Dim objHTTP As Object
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
url = "https://translate.google.pl/m?hl=" & translateTo & "&sl=" & translateFrom & "&tl=" & translateTo & "&ie=UTF-8&prev=_m&q=" & EncodeURL(param)
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
transtext = oHtml.getElementsByClassName("result-container")(0).innerText
URLエンコード関数
テキストをURLエンコードする補助関数です。
Function EncodeURL(ByVal str As String) As String
EncodeURL = Application.WorksheetFunction.EncodeURL(str)
End Function
テキストクリーニング関数
特定の文字を置換してテキストをクリーニングする補助関数です。
Function Clean(str As String)
str = Replace(str, """", """")
str = Replace(str, "%2C", ",")
str = Replace(str, "'", "'")
Clean = str
End Function
まとめ:ExcelでGoogle翻訳関数を利用して仕事の時短
GoogleTranslate関数
ExcelでDeepLの翻訳を利用したい方は以下の投稿をご覧ください。
コメント