それわVBA案件ですね

エクセルVBAネタを書いています

PDF文書の翻訳ツールを作る1

2月の中旬だというのに、なんだか5月みたいな陽気な今日この頃です。

こんちくわ 壁|ω・)ノ

今回はエクセルVBAスクレイピング機能を使って翻訳ツールを作りましたよ~なオハナシ・・・の触りを少々。。
 


でわいきます ̄▽ ̄)ノ

 
 


Contents



なぜ、そんなものを作ろうと思ったのか。

筆者は仕事柄英文の文献を読む機会が多かったりするのですが、純和風絶賛ニッポン人な筆者は必ずしも英語が得意なわけではなく、日本語の文章を読むかの如く英文を読み進めたりすることができるハズもなく・・・

つい、時間の節約を図るためにWeb翻訳ツールに文献の英文をコピペしてしまうことが多々あったりするのです。
ところがPDFファイルの文章をwebツールにコピペすると・・

・・なんか変なのです(˘•ω•˘)


f:id:FukuCyndiP:20210221001426p:plain

(Web上で公開されていた文献(Plants 2012, vol.1, p1-5)の一部を利用させていただきました)

日本語訳がかなり変ですが、コピペした英文を見ると文章の途中が不自然に改行されてることがわかります

f:id:FukuCyndiP:20210221001500p:plain:w400

この文中の改行を削除して半角スペースを入れたら、Google先生もうまく訳してくれるのですが、

f:id:FukuCyndiP:20210221001550p:plain


このくらいの文章ならまだしも、少し長い文章になるとですねぇ・・・・・たるいし、時間もかかるし、やってられんのです -ω-)。。



単純作業の繰り返しはまさしくVBA案件! とばかりに早速以下のコードを書きました。

Sub 改行をスペースに変換()

    Selection.Value = Replace(Selection.Value, Chr(10), " ")

End Sub


f:id:FukuCyndiP:20210221002705g:plain:w450

(対象文字列をセルにペーストして処理。3行コードで一発やね)


これで翻訳サイトが有効活用できるぞー٩(ˊᗜˋ*)و


と喜んではいたのですが、この作業は

  1. 文献の該当部部分をコピー
  2. エクセルのワークシートのどっかのセルをダブルクリック
  3. ペースト
  4. VBE起動
  5. 改行をスペースに変換マクロを起動
  6. 出来上がった文章が入ったセルをダブルクリック
  7. 文書全体を選択
  8. コピー
  9. ブラウザを起動して翻訳サイトにアクセス
  10. . 文書をペースト
  11. . 待つ



と、コードは3行でも翻訳文をゲットするまでにたくさんの手順が必要なのですねぇ。

そこで、この手順をできる限り自動化したい。さらにはGoogle翻訳よりも精度が高い DeepL翻訳サイトを使いたい~。

と、いうのが今回のプロジェクトになります。




最終的に出来上がったモノは

こんな感じに仕上がっておりますw

f:id:FukuCyndiP:20210221014303g:plain


手順も、

  1. 文献の該当部部分をコピー
  2. エクセルのワークシートマクロ起動ボタンをポチー
  3. 待つ

と3ステップと大幅に簡略化されました。


    これって、エクセル要る ・ω・)?


って感じの見た目になっておりますが、そこはVBAで作ったものなので・・ね^^;



まとめ

今回の記事では英文PDF文献の翻訳をVBAでやってみよう~。その動機について書きました。

英文文献を楽に読みたい一心で翻訳サイトを活用しようとしたのですが、PDF文書をサイトにコピペすると文章中にムダな改行が入ってしまって翻訳がうまく機能しないんですよねぇ。。でも、PDF文書上の改行部分に改行コードが差し込まれた状態でペーストされた結果なんだろうとすぐに気が付いたので、VBA案件一挙解決!のハズだったわけですが、実際に運用してみると面倒くさい。。そこで、もっと使い勝手をよくしようと一歩踏み込んだわけですが、当初想定していなかった課題が見つかったりして、思ったより苦労することになりました。

次回以降その中身を書いていこうと思っています。少々長いシリーズになってしまいそうですが、気長にお付き合いいただければありがたいです。

翻訳サイトを使って文献を翻訳しようとしているのは恐らく筆者だけではないと信じておりますので(職場の周囲からもPDFの翻訳がうまくできないとのボヤきが聞こえてきています)、これからの一連の記事がお役に立てればいいなぁと思っています。




でわまた~  ̄▽ ̄)ノシ