VBA でたらめに配置された
改行を削除して普通の文に戻したい!

Contents

はじめに

英語で書かれたpdfをGoogle翻訳にコピーアンドペーストしたとき、変な位置に改行がついていて翻訳がおかしなことになったことはありませんか?短い文章であれば自分で訂正すればいいのですが、文章が長くなるほど手間が掛かってかなり面倒くさいです。そんな悩みはVBAで解決しましょう。

また、マクロの実装については下の記事を参考にしてください。

マクロを使ってみたいけど、「何をすればいいか分からない」となっていませんか?このサイトでは、画像を使ってEXCELでマクロを使うための準備を手助けします。また、簡単なコードを使って動作の確認も一緒にしていきましょう。

コード作成

例えば、次のような文章をGoogle翻訳にコピーアンドペーストしたいとします。pdfの段組みが二段になっている時にこのようなガタガタに改行された文章になりやすいです。

ブロント語の英語翻訳

この文を以下のコードを用いて、Google翻訳に翻訳してもらえる文章にしたいと思います。

Sub 改行削除()
ActiveDocument.Content.Select
With Selection
.Text = Replace(.Text, vbCr, " ")
End With
End Sub

“ActiveDocument.content.Select”とは本文全体を選択するコードです。改行を削除する行を絞る場合はこのコードを変更する必要があります。その後”Replace”によって文章の置換を行います。置換の対象は[.]によって省略されている”With Selection”のかしょであり現在の選択箇所、すなわち本文全体です。また、検索する文字はvbCrで、これは改行を示しています。この改行を示すコードはコードはいくつか種類があるため、うまくいかない場合はここを変更するといいかもしれません。最後に、変更する文字列は” “であり、スペースにすることで文章が改行前の部分と改行後の部分でうまく繋がるようになると思います。

このコードを実際に起動すると、以下のようになり目的通りに動作することが確認できます。

最後に

基本的なコードですが、誰かの役に立てると幸いです。

また、今回使用した英訳ブロント語の再翻訳をおまけとして載せておきます。

忍者よりも騎士に頼られていたベヒ王は、スーとの戦いで待ち合わせに遅れたが、耐え始めたばかりだったので、ジュノにいたので急いでいた。アウェアでは忍者が倒れそうですが、LSの会話で忍者が叫んでいたようです。普段は手に入らない時間に使って戦争に参加すると、「もう手に入れましたか!」と歓迎されます。 「速い!」 「来い!盾が来た!」 「メインシールドが来た!」 「これで勝ちなさい!」忍者はアウェアの盾として行動できなかったので死んでいた。フラッシュを素早く使ってシールドした忍者は「勝ったとは思わない…」と言ったが、LSメンバーはどちらの見方?一瞬で理解できなかったようです。 「もう戦っている」と言ったので、戦士のサポ忍者の後ろに行っていきなりスピストを叩きました。 「救われた、終わったと思った」と忍者を行き来させるのを忘れた。周りに集まった忍者を忘れてしまい申し訳ありませんでした。普段はバックテルを無視してくれる人がいたらいいのですが、無視できませんでした。褒められたかったので、レイズを唱え、ついにバックテルが恥ずかしかった。家に帰りました。

ぜひ他の記事も見ていってください。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク