仕事をしていると、大量の日本語を英語に翻訳したいときがあります。
このとき、Google翻訳を使うと簡単に文章を処理できるのですが、複数の文章をまとめて翻訳するのが難しいというデメリットがあります。
そこで、複数行のエクセルに記載された日本語文章をまとめて英語に翻訳するツールを作成しました。
・VBAツールをダウンロード可能
このページではプログラムのダウンロードから解説まで行います。
無料でダウンロードできるので、ぜひ活用ください。
目次
エクセルの日本語文章をまとめてGoogle翻訳|ExcelVBAで自動化
このページで紹介するGoogle翻訳ツールは、以下の動画を見ると理解が深まります。
以下ではテキストと画像で説明していきます。
エクセル文章をまとめてGoogle翻訳するツールの使い方・手順
手順2|ボタンを押す
手順3|翻訳が終わるまで待つ
英語→日本語のパターンは以下のページで紹介しています。
詳しくは上記をご覧ください。
手順1|日本語をA列に入力
日本語を英語に翻訳したい場合は、右側のシート(Translate_JAtoEN)を選択し、A列に翻訳したい日本語を入力します。
手順2|ボタンを押す
ボタンを押下して、VBAプログラム(翻訳)を実行します。
手順3|翻訳が終わるまで待つ
プログラムを実行すると、一行ずつ翻訳結果がエクセルに入力されていきます。
使用の注意点
使用上の注意は、以下のページで紹介しています。
Internet Explorer(IE)を使用しないといけないといった使用条件があるので、注意が必要です。
上記のページで紹介していますが、基本ブラウザをIEに変更する必要があります。
そうしないと動作しませんので、ご了承ください。
基本ブラウザをEdgeからIEに設定変更
使用するPCは、Edgeが推奨だが、IEは使用可能という人もいるはずです。
そのような人は、ブラウザ設定を変更することで、本ツールが使用可能です。
以下の手順で、ブラウザ設定を変更してみてください。
2. URLに「edge://settings/profiles」を入力
3. サイドバーの「規定のブラウザ」をクリック
4. 「Internet Explorer に Microsoft Edge でサイトを開かせる」を「なし」で設定
テキストだけで分かりづらい人は、外部リンク(Microsoftの公式サイト)のページを紹介しておきます。
こちらをご確認の上、ブラウザ設定を変更してから本ツールをご利用ください。
VBA入りのエクセルファイルをダウンロード
以下で紹介しているVBAプログラムをそのまま使いたい人は、以下のフォームからダウンロードできます。
登録したメールアドレスへVBA入りのファイルを送信します。
本プログラムの内容をそのまま使用可能です。ぜひお仕事にお役立てください。
上記のフォームからダウンロードできるエクセルには、英語→日本語、日本語→英語の両方の翻訳マクロが保存されています。
VBA作成前の準備
ExcelでVBAを使うためにはいくつかの準備が必要です。
具体的には以下です。
準備2. 「Microsoft Internet Controls」と「Microsoft HTML Object 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をクリック
手順を以下で説明します。
上記の設定をしていないと、本事例で紹介しているプログラムは動作しません。必ずチェックを入れるようにします。
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 |
'プログラム0|変数設定の指定 Option Explicit 'プログラムA-1|プログラム開始 Sub GetGoogleTranlationByIE_JAtoEN() 'プログラムA-2|シート設定 Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Translate_JAtoEN") 'プログラムA-3|URL設定 Dim baseurl As String baseurl = "https://translate.google.com/?hl=ja&sl=ja&tl=en&text=" 'プログラムA-4|最終行を取得 Dim cmax As Long cmax = ws.Range("A65536").End(xlUp).Row 'プログラムA-5|翻訳したい英文を取得 Dim texts As Variant texts = ws.Range("A2:A" & cmax).value 'プログラムA-6|IEオブジェクト生成と起動 Dim objIE As New InternetExplorer Set objIE = New InternetExplorer objIE.Visible = True 'プログラムA-7|IE起動の待ち時間 Call WaitFor(3) 'n秒停止 'プログラムA-8|各行の翻訳したい文言をurlで記述 Dim i As Long For i = 1 To UBound(texts) Dim url As String url = baseurl & EncodeURL(texts(i, 1)) 'プログラムA-9|IEでGoogle翻訳ページにアクセス objIE.navigate url 'プログラムA-10|IE読み込み待ち Do While objIE.Busy Or objIE.readyState < 4 DoEvents Loop 'プログラムA-11|IEの表示待ち Call WaitFor(3) 'n秒停止 Debug.Print objIE.document.getElementsByTagName("textarea")(1).innerText 'プログラムA-12|B列に翻訳結果を出力 ws.Range("B1").Offset(i, 0).value = objIE.document.getElementsByTagName("textarea")(1).innerText Next 'プログラムA-13|IEを閉じる objIE.Quit 'プログラムA-14|IEオブジェクトの解放 Set objIE = Nothing 'プログラムA-15|プログラム終了 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 |
上記のプログラムの基本骨格は、以下の英語→日本語バージョンのページで説明しています。
英語→日本語バージョンとの違いは、プログラムA-10とプログラムC-1の2箇所です。
したがってこのページでは、この2箇所のみ説明を行います。
ただしプログラムA-2で扱うシートが違ったり、プログラムA-3のURL設定が日本語→英語用になっており、細かい違いはあります。
しかしこれらの細かい違いは、プログラム説明が必要なほどの違いではないため、省略します。
プログラムA-10|Google翻訳用のurlを取得
1 2 |
Dim url As String url = baseurl & EncodeURL(texts(i, 1)) |
プログラムA-3で設定したbaseurlです。
このURLで英語を日本語に変換するGoogle翻訳ページの骨格です。
「baseurl」と「翻訳したい日本語」をそのまま文字列でつなげても、Google翻訳で正しく翻訳されません。
これは日本語をURLエンコードしていないからです。
そのため、プログラムA-5で取得した翻訳したい日本語「texts(i,1)」をプログラムC-1を使って、URLエンコードします。
そしてURLエンコードしたtexts(i,1)をbaseurlを結合してURLをつかって、Google翻訳を実施します。
プログラムC-1|日本語をURLエンコード
1 2 3 |
Function EncodeURL(ByVal sWord As String) As String EncodeURL = Application.WorksheetFunction.EncodeURL(sWord) End Function |
日本語のエンコードはWorksheetFunction.EncodeURL(対象文字列)を使うことで処理可能です。
エンコード前後の文字列をDebug.Printで確認してみます。
Debug.Printでの検証結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Function EncodeURL(ByVal sWord As String) As String Debug.Print "Encode前:" & sWord EncodeURL = Application.WorksheetFunction.EncodeURL(sWord) Debug.Print "Encode後:" & EncodeURL End Function >>>Encode前:本ガイドラインは、副業・兼業を希望する者が年々増加傾向にある中、安心して副業・兼業に取り組むことができるよう、副業・兼業の場合における労働時間管理や健康管理等について示したものである >>>Encode後:%E6%9C%AC%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AF%E3%80%81%E5%89%AF%E6%A5%AD%E3%83%BB%E5%85%BC%E6%A5%AD%E3%82%92%E5%B8%8C%E6%9C%9B%E3%81%99%E3%82%8B%E8%80%85%E3%81%8C%E5%B9%B4%E3%80%85%E5%A2%97%E5%8A%A0%E5%82%BE%E5%90%91%E3%81%AB%E3%81%82%E3%82%8B%E4%B8%AD%E3%80%81%E5%AE%89%E5%BF%83%E3%81%97%E3%81%A6%E5%89%AF%E6%A5%AD%E3%83%BB%E5%85%BC%E6%A5%AD%E3%81%AB%E5%8F%96%E3%82%8A%E7%B5%84%E3%82%80%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%80%81%E5%89%AF%E6%A5%AD%E3%83%BB%E5%85%BC%E6%A5%AD%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E5%8A%B4%E5%83%8D%E6%99%82%E9%96%93%E7%AE%A1%E7%90%86%E3%82%84%E5%81%A5%E5%BA%B7%E7%AE%A1%E7%90%86%E7%AD%89%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E7%A4%BA%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%81%A7%E3%81%82%E3%82%8B |
このEncode後の文字列を活用して、Google翻訳を実行すると正しい翻訳結果を得る事ができます。
他のプログラム解説
先述しましたが、他のプログラム解説は以下のページで行っています。
プログラムについて理解したい人はご覧ください。
プログラムの解説はここまでです。
ウェブ情報を取得する事例
ウェブ情報を取得する事例は別ページでも紹介しています。
1. IE操作でウェブ情報を取得
2. HTTPリクエストでウェブ情報を取得
3. APIを使ってウェブ情報を取得
4. VBA以外のプログラミング言語でウェブ情報を取得
Excel VBAについて詳しく理解したいなら
VBAを活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にVBAを活用して効率化してきた作業は以下の記事で紹介しています。
興味がある人は以下の記事もご覧ください。
動画でも解説しています。
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!
(音声が小さいので、ボリュームを上げてご覧いただければと思います)
VBAの勉強方法
私はプログラミング初心者からVBAを勉強を始めて少しずつレベルアップしていきました。
成長の過程は以下で紹介しています。
学習の過程では、少しずつ難易度を上げていきながら、少し難しい内容に挑戦していくと効率的に学ぶことができます。
上記のリンクでは、VBA勉強に役立つ内容を紹介しています。
興味がある人はご覧ください。