はじめに
Google翻訳APIを使ってテキストを翻訳するVBAマクロを作成しました。
オンラインで翻訳してくれるサイトはよくありますが、ローカルで翻訳する必要があったのでマクロでやることにしました。
*事前にGoogleからAPI Keyを取得する必要があります。
Google翻訳APIを使ってテキストを翻訳するVBAマクロ
- ExcelのA列へ翻訳したいテキストを設定し、Alt + F11を押します。
*まずは英語から日本語へ翻訳するツールを作成します。
*今回は4行目から8行目までを翻訳するVBAマクロを作成します。
- 参照設定ダイアログを開きます。
- 以下のライブラリへチェックを入れてOKを押します。
Microsoft Scripting Runtime
*JsonをPurseするためのライブラリを追加するため
- 標準モジュールを追加します。
- 以下URLから最新の「Source code(zip)」をダウンロードし解凍し、JsonConverter.basの内容を上記で追加した標準モジュールへ貼り付ける。
・1行目の”Attribute VB_Name = “JsonConverter””はコメントアウトまたは削除します。
・オブジェクト名はJsonConverterに設定します。
- ThisWorkbookをダブルクリックします。
- 以下のコードを貼り付けます。
Sub exEnJa_Google()
Call Google_Trans("en", "ja")
End Sub
Function Google_Trans(fromLang As String, toLang As String)
'Google Translation API を利用してA列値を翻訳し、翻訳結果をC列へ代入するVBA
'本Functionの引数へは以下の通り設定すること
' 英語→日本語:fromLang = "en", toLang = "ja"
' 日本語→英語:fromLang = "ja", toLang = "en"
On Error GoTo Err_Handler
Dim objHTTP As Object
Dim jsonObj As Object
Dim apiTrans As String '翻訳結果
Dim errCnt As Integer 'エラー回数
Dim wWord As String
Dim sName As String
Dim googleApiKey As String
Dim googleURL As String
googleApiKey = "xxxxxxxxxxxx"
googleURL = "https://translation.googleapis.com/language/translate/v2"
sName = ActiveSheet.Name
For i = 4 To 8 '今回は4行目から8行目までを翻訳する
wWord = Replace(StrConv(Worksheets(sName).Cells(i, 1), vbNarrow), Chr(34), "\" & Chr(34))
'B列に値が設定されていたらskip
If wWord = "" Or Worksheets(sName).Cells(i, 2) <> "" Then GoTo Continue
reDo:
Set objHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
Url = googleURL & "?key=" & googleApiKey & "&q=" & wWord & "&source=" & fromLang & "&target=" & toLang
objHTTP.Open "POST", Url, False
'Header を追加する
objHTTP.setRequestHeader "Content-type", "application/json;charset=UTF-8"
objHTTP.send
'翻訳結果をVBA-JSONを利用してParseする
Set jsonObj = JsonConverter.ParseJson(objHTTP.responseText)
If Not IsEmpty(jsonObj("data")) Then
'エラーでない場合は翻訳結果を設定
apiTrans = jsonObj("data")("translations")(1)("translatedText")
ElseIf errCnt < 5 Then
'エラー5回までAPIを投げ続ける
errCnt = errCnt + 1
GoTo reDo
Else
'エラー5回を超えたらエラーメッセージを表示し処理を終了する
MsgBox i & "行目でエラーが発生しました" & vbCrLf & "処理を終了します" & vbCrLf & vbCrLf & _
"エラーCode: " & jsonObj("error")("code") & vbCrLf & "エラーStatus: " & jsonObj("error")("status") & vbCrLf & "エラー内容: " & jsonObj("error")("message")
End
End If
'翻訳結果をB列へ代入
Worksheets(sName).Cells(i, 2).Value = apiTrans
Continue:
Next i
MsgBox "完了"
End
Err_Handler:
Debug.Print "エラー番号:" & Err.Number & Err.Description
MsgBox "エラーが発生しました" & vbCrLf & "処理を終了します" & vbCrLf & vbCrLf & _
"エラー番号:" & Err.Number & vbCrLf & Err.Description
End Function
*googleApiKey = “xxxxxxxxxxxx”のxの部分へ取得したGoogleのAPI Keyを設定します。
- 「Sub exEnJa_Google()」の行を選択しカーソルを当て、▶ボタンを押します。
以上です。
処理結果
翻訳結果を取得しB列に設定できました✌
試しにA列へ日本語を設定して翻訳してみましたが、日本語の部分には空白が返ってくるようですね。
応用編
呼び出す側のファンクションの引数を変更することで日本語から英語へ翻訳するツールにしようかと思っているのですが、文字化けするので今後改善していきますm()m
Sub exJaEn_Google()
Call Google_Trans("ja", "en")
End Sub
機械翻訳のメリットは?
Google翻訳って便利ですよね。最近使うことがどんどん増えています。
機械翻訳のメリットを以下に記載します。
- 迅速性と効率性: 機械翻訳は、人手による翻訳に比べて非常に迅速で効率的です。大量のテキストを短時間で翻訳する必要がある場合や、リアルタイムでの翻訳が必要な場合に役立ちます。
- 広範囲な言語サポート: 機械翻訳システムは多言語対応が可能であり、数十以上の言語間で翻訳を行うことができます。これにより、異なる言語間のコミュニケーションや情報交換が容易になります。
- コスト削減: 人手による翻訳に比べて、機械翻訳はコストを大幅に削減できます。特に大量のテキストを翻訳する場合や、翻訳プロジェクトの予算が限られている場合に有効です。
- 大規模なテキスト処理: 機械翻訳は大規模なテキストを一度に処理できるため、多言語の文書やウェブサイト、ソーシャルメディアの投稿など、膨大な情報量を効率的に翻訳することが可能です。
- 即時性とリアルタイム性: リアルタイムコミュニケーションや情報共有の場面で、機械翻訳は即座にテキストを翻訳して提供することができます。これにより、国際会議やオンラインチャットなどで言語の壁を乗り越えることができます。
- 進化と改善: 機械翻訳技術は急速に進歩しており、機械学習やニューラルネットワークの発展により品質が向上しています。新しいアルゴリズムやデータドリブンなアプローチにより、機械翻訳の精度や自然さが向上しています。
機械翻訳のデメリットは?
逆にデメリットも。。と思うことが多々あります。
デメリットを以下に記載します。
- 品質のばらつき: 機械翻訳の品質は、言語の複雑さや文脈、専門用語の適切な処理など、さまざまな要因に影響されます。特に言語間の文化的な違いやニュアンスの表現、特定の分野に特化した専門用語などにおいて、機械翻訳の品質は十分でない場合があります。
- 文脈の理解の難しさ: 機械翻訳システムは、人間のように文脈を完全に理解することができません。特に曖昧な表現や冗長な言い回し、比喩的な表現など、文脈に依存する部分では正確な翻訳が難しい場合があります。
- 専門用語や専門分野の不適切な扱い: 特定の専門分野や専門用語において、機械翻訳システムは適切な翻訳が難しい場合があります。特に医学、法律、工学などの専門分野では、専門知識や文脈に基づいた翻訳が必要とされるため、機械翻訳の限界が露呈します。
- 人間の翻訳者の代替にはならない: 機械翻訳は便利なツールですが、人間の翻訳者に完全に代替することはできません。特に感情や文化的背景、言語の美しさなど、人間の洞察や判断が必要な場合には、機械翻訳が不十分である場合があります。
- プライバシーとセキュリティの懸念: 機械翻訳サービスを利用する際には、機密情報や個人情報が第三者に漏洩するリスクがあります。特に機密性の高い情報を翻訳する場合には、セキュリティ対策が必要です。
- 文化的な誤解や誤訳: 機械翻訳は文化的な背景や社会的文脈を十分に理解することが難しいため、文化的な誤解や誤訳が発生する可能性があります。特に言い回しや慣用句、異なる文化圏での習慣などに関して、機械翻訳は正確な翻訳を提供することが難しい場合があります。
ポストエディットとは?
上記の通り機械翻訳にはメリット・デメリットがあります。
そのメリット・デメリットのバランスを取る手法がポストエディットです。
最近よく耳にするポストエディット(Post-Editing)とは、機械翻訳の出力を人間がレビューし、修正する作業のことを指します。機械翻訳システムが生成した翻訳を人間が精査し、誤訳や不自然な表現を修正して翻訳の品質を向上させるプロセスです。
ポストエディットは、機械翻訳の出力を完全に信頼できるものとして受け入れるのではなく、機械翻訳の結果を補完し、翻訳の精度や自然さを向上させるための手法です。主な目的は、機械翻訳の出力を人間がチェックし、必要に応じて修正してより適切な翻訳を提供することです。
ポストエディットのメリットは?
- 翻訳品質の向上: 機械翻訳システムはあくまで機械的な処理を行うため、完璧な翻訳を保証することは難しい場合があります。ポストエディットによって、機械翻訳の出力を人間が精査し、翻訳の品質を向上させることができます。
- 文脈やニュアンスの修正: 機械翻訳は文脈やニュアンスを正確に捉えることが難しい場合があります。ポストエディットでは、文脈を考慮して適切な語句や表現を選択し、翻訳の正確性を高めることができます。
- 専門用語や業界用語の適切な選択: 特定の業界や専門分野では、専門用語や業界用語が頻繁に使用されます。機械翻訳システムはこれらの用語を正確に翻訳することができない場合がありますが、ポストエディットによって適切な専門用語や業界用語を選択し、翻訳の専門性を高めることができます。
- スタイルやトーンの調整: 翻訳文のスタイルやトーンは、原文の文体や意図に合わせて調整する必要があります。ポストエディットでは、翻訳文のスタイルやトーンを調整し、読み手に適した表現を提供することができます。
- 地域や文化への適合性の向上: 機械翻訳システムは地域や文化の違いを考慮することが難しい場合があります。ポストエディットでは、地域や文化に適した表現や言い回しを選択し、翻訳の地域性や文化性を向上させることができます。
まとめ
Google翻訳APIを使ってテキストを翻訳するVBAマクロについて記載しました。
ローカル環境で翻訳する場合に便利です。
機械翻訳にはメリット・デメリットがあります。
ポストエディットなどの手法を使い、機械翻訳で作業を効率化・コスト削減していきたいと思います。
コメント