仕事をしていると、大量の文章を翻訳したいときがあります。
このとき、Google翻訳を使うと簡単に文章を英訳できるのですが、複数の文章をまとめて翻訳するのが難しいというデメリットがあります。
というのもGoogle翻訳を使うと、文章ごとにGoogleのウェブページにコピペしないといけないからです。
翻訳した文章が少なければ問題ありませんが、大量の文章をGoogle翻訳したいときは厄介な作業となります。
そこで、ワードに記載された文章をまとめて翻訳するツールを作成しました。
・VBAツールをダウンロード可能
このページではプログラムのダウンロードから解説まで行います。
無料でダウンロードできるので、ぜひ活用ください。
目次
Word文章をまとめてGoogle翻訳するツールの使い方・手順
手順2|ボタンを押す
手順3|翻訳が終わるまで待つ
以下で詳しく説明していきます。
手順1|翻訳したいWordのファイルパスをB1に入力
翻訳したい文章(英語もしくは日本語)をB1に入力します。
手順2|ボタンを押す
ボタンを押下して、VBAプログラム(翻訳)を実行します。
英語から日本語に翻訳する場合
日本語から英語に翻訳する場合
手順3|翻訳が終わるまで待つ
プログラムを実行すると、一文ずつ翻訳結果がWordに出力されていきます。
英語から日本語に翻訳する場合
翻訳したWordファイルは以下のようにエクセルと同じフォルダに保管されます。
日本語から英語に翻訳する場合
翻訳したWordファイルは以下のようにエクセルと同じフォルダに保管されます。
さて、プログラムの都合上、翻訳の待ち時間を設定しています。
なぜならGoogle翻訳の処理時間を待たないとエラーが出るからです。
実際、上記の画像では1文あたり約4,5秒で結果が表示されます。
そのため行数が増えるほど、翻訳完了までの時間が必要になります。
1行あたり、4,5秒の翻訳時間を目安として考えてください。
ボタンにVBAプログラムを登録
上記の画像では、VBAプログラムをボタンに登録しています。
ボタンにVBAプログラムを登録することで、ボタンを押下しプログラムを実行することができます。
ボタンをVBAプログラムを設定したい場合は、以下で動画も交えて設定方法を紹介しているので、そちらをご覧ください。
使用の注意点|IEが使用できないと、このVBAツールは使えない
このツールを使えるようにするには、Internet Explorer(IE)が使用できることが条件となります。
会社のセキュリティ上、IEが使用できない場合、このツールは使用不可です。
現在使用中のPCでIEを利用可能かどうかを事前に確認しておいてください。
もしIEを使用できる場合は、以下の対応を行い、基本ブラウザがIEとなるように設定を変更する必要があります。
なおIEは2022年にサービス停止となっています。セキュリティ上の課題は残りますので、検討の上、ご利用ください。
基本ブラウザをEdgeからIEに設定変更
使用するPCは、Edgeが推奨だが、IEは使用可能という人もいるはずです。
そのような人は、ブラウザ設定を変更することで、本ツールが使用可能です。
以下の手順で、ブラウザ設定を変更してみてください。
2. URLに「edge://settings/profiles」を入力
3. サイドバーの「規定のブラウザ」をクリック
4. 「Internet Explorer に Microsoft Edge でサイトを開かせる」を「なし」で設定
テキストだけで分かりづらい人は、外部リンク(Microsoftの公式サイト)のページを紹介しておきます。
こちらをご確認の上、ブラウザ設定を変更してから本ツールをご利用ください。
VBA入りのエクセルファイルをダウンロード
以下で紹介しているVBAプログラムをそのまま使いたい人は、以下のフォームからダウンロードできます。
登録したメールアドレスへVBA入りのファイルを送信します。
本プログラムの内容をそのまま使用可能です。ぜひお仕事にお役立てください。
上記のフォームからダウンロードできるエクセルには、英語→日本語、日本語→英語の両方の翻訳マクロが保存されています。
このツールを使うメリット
Googleの翻訳ツールは精度が上がってきています。このツールを活用して、時間を書けるべき仕事に集中できる環境を作ってほしいと思います。
また翻訳を仕事にしている人も、翻訳のアシストツールとして活用できるはずです。
ただし、Google翻訳の精度は上がっていますが、英語の翻訳として不十分なところがあります。
もし取引先に連絡したり、重要な資料を作成したりする場合は、チェックを入れることをおすすめします。
余計なVBAの設定は不要
上記のフォームでダウンロードしたエクセルであれば、以下のVBAプログラムの設定やプログラムを理解する必要はありません。
IEを使える環境であれば、すぐに使用可能です。
もしプログラムに興味がなければ、フォームからエクセルをダウンロードしてみてください。
注意点
このVBAツールを使用する場合の注意点と対処法を列挙しておきます。
1. エラーが起きたときの対処法
プログラムの関係上、上記のようなエラーが発生することがあります。
その場合は以下の対処法を試してみてください。
対処法2|一度Internet Explorerを起動してから試す
対処法3|PCを再起動してやり直す
対処法1|Wordの文章が長い場合は、改行する
翻訳したい文章が長いほど、エラーの原因になります。
またgoogle翻訳の性質上、翻訳したい文章の文字数が5000を超えると全て翻訳されない場合があります。
そのため、文章が長い場合は、複数の改行に分けることを推奨します。
対処法2|一度Internet Explorerを起動してから試す
もし文字数を減らしてもエラーが出る場合は、Internet Explorerを閉じてから一度開いて、トップページが開いているかどうか確認してみてください。
その後で、エクセルの翻訳ボタンを押すとうまくいく場合があります。
対処法3|PCを再起動してやり直す
文字数の確認、Internet Explorerの起動確認を試しても難しい場合は、PCを再起動してみてください。
そうすると、うまくいく場合があります。
2. Internet Explorerが使えない場合
VBA以外の外部ツールをダウンロードする必要がありますが、Seleniumを使った方法で代用することが可能です。
またPowerAutomateによる方法も検討の余地があります。
このページでは紹介していませんが、要望によっては今後紹介していきます。
VBA作成前の準備
ExcelでVBAを使うためにはいくつかの準備が必要です。
具体的には以下です。
準備2. 「Microsoft Internet Controls」と「Microsoft HTML Object Library」の参照設定を変更
準備3. 「Microsoft Word Application XX.X Library」の参照設定を変更
上記に関して、以下で説明します。
準備1. ExcelでVBAを使うための事前準備
エクセルVBAを使うためには、保存ファイルの拡張子変更、Excelの基本設定変更の2つをしておきます。
2つともで難しい作業はなく、それぞれ1分もあれば設定変更可能です。
上記に関しては、以下の記事で解説をしています。
もしVBAを使うための準備段階に不安がある人は上記をご覧ください。
この内容は以下の動画で紹介しています。
入門エクセルマクロの使い方|マクロ作成から実行までを徹底解説
文字や画像だけで分かりづらい人は上記の動画をご覧ください。
準備2. 「Microsoft Internet Controls」と「Microsoft HTML Object Library」の参照設定を変更
エクセルVBAでウェブ情報を取得するために、VBAの設定を変更しておく必要があります。
これらの参照設定を変更することで、Internet Explorerを操作してウェブ情報を取得することが可能になります。
参照設定の変更手順は以下のとおりです。
手順2. 「参照設定」を選択
手順3. 「Microsoft Internet Controls」と「Microsoft HTML Object Library」にチェックを入れる
手順4. OKをクリック
手順を以下で説明します。
上記の設定をしていないと、本事例で紹介しているプログラムは動作しません。必ずチェックを入れるようにします。
準備3. 「Microsoft Word Application XX.X Library」の参照設定を変更
エクセルVBAでWordを操作するために、VBAの設定を変更しておく必要があります。
参照設定の変更手順は以下のとおりです。
VBAのプログラムソース解説
今回紹介するプログラムの概要は以下です。
VBAのプログラムソース(英語から日本語)解説
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
'プログラム0|変数設定の指定 Option Explicit 'プログラムA-1|プログラム開始 Sub GetGoogleTranslation_en_jp() 'プログラムA-2|シート設定 Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") 'プログラムA-3|翻訳したいWordファイルパスを取得 Dim filepath As String filepath = ws.Range("B1").value 'プログラムA-4|FileSystemObjectのオブジェクト生成 Dim fs As New Scripting.FileSystemObject Set fs = New Scripting.FileSystemObject 'プログラムA-5|filepathで指定したファイルが存在するかチェック If fs.FileExists(filespec:=filepath) = False Then: Exit Sub 'プログラムA-6|Wordファイル(docx)のみを取得 If Not fs.GetExtensionName(filepath) = "docx" Then: Exit Sub 'プログラムA-7|対象のWordファイルを開く Dim wdapp As Word.Application Set wdapp = New Word.Application wdapp.Visible = True Dim wddoc As New Word.document Set wddoc = wdapp.Documents.Open(Filename:=filepath) 'プログラムA-8|InternetExplorerのオブジェクト設定 Dim objIE As New InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'プログラムA-9|プログラムB実行 Call WaitFor(3) 'n秒停止 'プログラムA-10|URL設定 Dim baseurl As String baseurl = "https://translate.google.co.jp/?hl=ja&sl=auto&tl=ja&text=" 'Dim mytranslations() As String 'プログラムA-11|wordのパラグラフを取得 Dim wdparas As Variant Set wdparas = wddoc.Paragraphs 'プログラムA-12|wordのパラグラフを一つずつ処理 Dim i As Long For i = wdparas.Count To 1 Step -1 'プログラムA-13|各パラグラフの文字数を取得 Dim wdtext As String wdtext = wdparas(i).Range.Text 'プログラムA-14|各パラグラフの文字数が1以上ならば実行 If Len(wdtext) > 1 Then 'プログラムA-15|Google翻訳のURLにアクセス Dim url As String url = baseurl & wdtext objIE.navigate url 'プログラムA-16|IE読み込み待ち Do While objIE.Busy Or objIE.readyState < 4 DoEvents Loop 'プログラムA-17|プログラムB実行 Call WaitFor(5) 'n秒停止 'プログラムA-18|翻訳した文言を取得 Dim sentence As String sentence = objIE.document.getElementsByTagName("textarea")(1).innerText 'プログラムA-19|翻訳した文言をワードの挿入 wddoc.Paragraphs(i).Range.InsertAfter sentence & vbNewLine End If Next 'プログラムA-20|InternetExplorerを閉じる objIE.Quit 'プログラムA-21|新しいワードファイルとして保存 Dim wordfilename As String wordfilename = Format(Date, "yyyy-mm-dd") & "_translated_" & wddoc.name wddoc.SaveAs2 Filename:=ThisWorkbook.path & "\" & wordfilename 'プログラムA-22|オブジェクト解放 Set objIE = Nothing Set wddoc = Nothing Set wdapp = Nothing 'プログラムA-23|プログラム終了 End Sub 'プログラムB-1|プログラム開始 Function WaitFor(ByVal second As Integer) 'プログラムB-2|待ち時間の設定 Dim futureTime As Date futureTime = DateAdd("s", second, Now) 'プログラムB-3|設定した時間まで待機 While Now < futureTime DoEvents Wend 'プログラムB-4|プログラム終了 End Function |
VBAのプログラムソース(日本語から英語)解説
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
'プログラム0|変数設定の指定 Option Explicit 'プログラムA-1|プログラム開始 Sub GetGoogleTranslation_jp_en() 'プログラムA-2|シート設定 Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") 'プログラムA-3|翻訳したいWordファイルパスを取得 Dim filepath As String filepath = ws.Range("B1").value 'プログラムA-4|FileSystemObjectのオブジェクト生成 Dim fs As New Scripting.FileSystemObject Set fs = New Scripting.FileSystemObject 'プログラムA-5|filepathで指定したファイルが存在するかチェック If fs.FileExists(filespec:=filepath) = False Then: Exit Sub 'プログラムA-6|Wordファイル(docx)のみを取得 If Not fs.GetExtensionName(filepath) = "docx" Then: Exit Sub 'プログラムA-7|対象のWordファイルを開く Dim wdapp As Word.Application Set wdapp = New Word.Application wdapp.Visible = True Dim wddoc As New Word.document Set wddoc = wdapp.Documents.Open(Filename:=filepath) 'プログラムA-8|InternetExplorerのオブジェクト設定 Dim objIE As New InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'プログラムA-9|プログラムB実行 Call WaitFor(3) 'n秒停止 'プログラムA-10|URL設定 Dim baseurl As String baseurl = "https://translate.google.com/?hl=ja&sl=ja&tl=en&text=" 'プログラムA-11|wordのパラグラフを取得 Dim wdparas As Variant Set wdparas = wddoc.Paragraphs 'プログラムA-12|wordのパラグラフを一つずつ処理 Dim i As Long For i = wdparas.Count To 1 Step -1 'プログラムA-13|各パラグラフの文字数を取得 Dim wdtext As String wdtext = wdparas(i).Range.Text 'プログラムA-14|各パラグラフの文字数が1以上ならば実行 If Len(wdtext) > 1 Then 'プログラムA-15|Google翻訳のURLにアクセス Dim url As String url = baseurl & EncodeURL(wdtext) objIE.navigate url 'プログラムA-16|IE読み込み待ち Do While objIE.Busy Or objIE.readyState < 4 DoEvents Loop 'プログラムA-17|プログラムB実行 Call WaitFor(5) 'n秒停止 'プログラムA-18|翻訳した文言を取得 Dim sentence As String sentence = objIE.document.getElementsByTagName("textarea")(1).innerText 'プログラムA-19|翻訳した文言をワードの挿入 wddoc.Paragraphs(i).Range.InsertAfter sentence & vbNewLine End If Next 'プログラムA-20|InternetExplorerを閉じる objIE.Quit 'プログラムA-21|新しいワードファイルとして保存 Dim wordfilename As String wordfilename = Format(Date, "yyyy-mm-dd") & "_translated_" & wddoc.name wddoc.SaveAs2 Filename:=ThisWorkbook.path & "\" & wordfilename 'プログラムA-22|オブジェクト解放 Set objIE = Nothing Set wddoc = Nothing Set wdapp = Nothing 'プログラムA-23|プログラム終了 End Sub 'プログラムB-1|プログラム開始 Function WaitFor(ByVal second As Integer) 'プログラムB-2|待ち時間の設定 Dim futureTime As Date futureTime = DateAdd("s", second, Now) 'プログラムB-3|設定した時間まで待機 While Now < futureTime DoEvents Wend 'プログラムB-4|プログラム終了 End Function 'プログラムC-1|日本語をURLエンコード Function EncodeURL(ByVal sWord As String) As String EncodeURL = Application.WorksheetFunction.EncodeURL(sWord) End Function |
このページでは、プログラムの詳しい解説は省略します。
上記のページでエクセルバージョンのプログラムを解説していますので、詳しくはそちらをご覧ください。
ウェブ情報を取得する事例
ウェブ情報を取得する事例は別ページでも紹介しています。
1. IE操作でウェブ情報を取得
2. HTTPリクエストでウェブ情報を取得
3. APIを使ってウェブ情報を取得
4. VBA以外のプログラミング言語でウェブ情報を取得
Excel VBAについて詳しく理解したいなら
VBAを活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にVBAを活用して効率化してきた作業は以下の記事で紹介しています。
興味がある人は以下の記事もご覧ください。
動画でも解説しています。
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!
(音声が小さいので、ボリュームを上げてご覧いただければと思います)
VBAの勉強方法
私はプログラミング初心者からVBAを勉強を始めて少しずつレベルアップしていきました。
成長の過程は以下で紹介しています。
学習の過程では、意識すべきポイントがあります。
自分のレベルに合わせて、少しずつレベルアップしていくとより効果的に学ぶことができます。
以下のページで事例や動画を使いながら、エクセルマクロについて勉強できます。
上記のリンクでは、体系的にマクロを勉強できますので、興味がある人はご覧ください。