Wordマクロで翻訳を楽にする:用語集で一括置換 (無料)

役立ち情報

Wordマクロが使えれば、翻訳時にマニュアルでやっていた作業を一瞬で終わらせることができます。

翻訳をしていて、訳文を考えるまでもないのに、量が多くて、考える時間よりも作業をする時間が惜しくなるときがあります。

例えば、固有名詞を翻訳する、数字を漢数字に変換する、表記のゆれを統一する、といったケースです。

いつもどうやったら効率的に翻訳できるかということを考えています。(「翻訳を効率化させるコツ5選」)

この記事では、Wordファイルの中に大量に出てくる固有名詞 (英語) を、早く正確に置換するためのWordマクロを使った方法をご紹介します

もちろん、すべて無料でできますので、安心してお試しください。

Wordマクロを使うまでは

ちなみに、Wordマクロの存在は知っていましたが、マクロを組むのが自分にはできそうになくて、ろくに調べもせずに、しばらく放置をしていました。

いや、少しはネットで調べたのです。

新田順也さんのサイト、みんなのワードマクロで紹介されていた「上書き翻訳ツール」というものがあることを知って、興味を持ちました。

なお、「上書き翻訳ツール」の試用期間は30日で、購入するならシェアウェアとして7,500円で手に入ります。

7,500円を投資すべきか迷った末、投資せずに何か別の方法を、と思って色々調べた結果がこの記事になりました。

効率の悪い方法

Wordマクロを自分で作れると分かるまでは、以下のようなアナログな方法でやっていました。

  1. 用語集をエクセルで作成する (原文+訳文の2列)
  2. 1の用語集と、翻訳対象のWordファイルを両方開く
  3. 置換ダイアログを立ち上げ、検索する文字列、置換後の文字列、それぞれを入力し置換
  4. 3-4をすべての単語が置換されるまで繰り返す
  5. マウス操作とキーボード操作で、手首が痛くなる

非効率的なこと、この上なしでした。

Wordマクロで、用語集から一括置換する詳細手順

さて、本題のWordマクロでの一括置換方法です。

1. 置換用の用語集を作成

まずは、Excelで、置換用の用語集を作成します。A列に置換前の用語 (=検索する用語) を、B列に置換後の用語を入力します。(以下の画像を参照)

用語集を作成
用語集を作成

このとき、スペルチェックをしておくと、誤った単語で置換されることがなくなるので安心です。

2. 文字列の長さで降順ソート

次に、C列にLEN関数を追加します。何の関数かというと、A列の単語の文字数を表示するものです。

2.1. LEN関数を追加

1. C1のセルに、=LEN(A1)と入力し、Enterを押します。 (以下の画像を参照)

用語集を編集
用語集を編集

2. A1の文字数が、C1に表示されます。(例:7)

3. 2行目以降にも関数を反映するため、C1のセルが選択された状態で、C1のセル右下にマウスポインタを合わせ、+マークになったらダブルクリックします。

4. 関数がすべての行に反映されて、文字数が表示されました。(以下の画像を参照)

用語集を編集2
用語集を編集2

2.2. C列で降順ソート

2.1. C1のセルが選択された状態 (←これ大事) で、Excelメニューの [ホーム] ⇒ [並べ替えとフィルター] ⇒ [降順]を選択します。(以下の画像を参照)

並べ替え
並べ替え

2.2. C列で降順ソートされました。(以下の画像を参照)

用語集を編集3
用語集を編集3

この降順ソートを行う目的とは?

最初、用語集はアルファベット順に並んでいたと思います。アルファベット順だと、例えば「Guinea」の後に「Papua New Guinea」が来ます。

用語集に書かれている順に置換を行うので、1) Guineaをギニアに置換をした後に、2) Papua New Guineaをパプアニューギニアに置換しようとしますが、

1)の時点で、「Guinea」は「ギニア」に、「Papua New Guinea」は「Papua New ギニア」に変換され、
2)の時点で、Papua New Guineaに該当する文字列はすでに一部置換されています。

つまり、 降順ソートを行って、長い単語を先に置換するようにすれば、

まず、「Papua New Guinea」を「パプアニューギニア」に置換して、
次に、「Guinea」を「ギニア」に置換することができます。

3. CSV形式で保存

文字列の長さで降順ソートができたら、C列は不要なので削除し、CSV形式で保存します。手順は以下の通りです。

3.1. C列を行ごと削除して、A列とB列のみにします。

3.2. Excelメニューの [ファイル] ⇒ [名前を付けて保存] を選択し、ファイル名 (何でもOK) を指定し、ファイルの種類として、CSV (コンマ区切り)(*.csv)を選択します。(保存先はどこでもOK)

CSV UTF-8 (コンマ区切り)(*.csv) ではないのでご注意ください。
CSV UTF-8の方を選択すると、置換をしたときに文字化けします。

用語集をCSV形式で保存

CSVファイルを保存した場所をお忘れなく。

4. Wordマクロを用意

Wordマクロで翻訳を効率化
Wordマクロで翻訳を効率化

4.1. 以下のマクロコードを上から下までコピーして、Windows標準のメモ帳や、TeraPadなどに貼り付けます。

なお、マクロについては、エク短さんの記事「【Word VBA】複数の文字を一括・連続置換する方法」を参考にさせていただき、一部 (プロパティのところ) 編集しました。

Sub 複数の文字列を置換()

Dim csvFilePass
Dim strBuf As String
Dim tmp As Variant

'置換リストファイルを指定します。
csvFilePass = "C:\<実際の保存場所>\terms.csv"


Open csvFilePass For Input As #1

'CSV内の行数分置換処理を繰り返す。

Do Until EOF(1)
    
    '1行分のデータを読み込む。
    Line Input #1, strBuf
    
    '文字列を","で分割する。
    tmp = Split(strBuf, ",")

    '検索・置換の設定を行う。
    With Selection.Find
    
        .ClearFormatting '検索条件から書式を削除する。
        .Replacement.ClearFormatting '置換対象の書式を削除する。
        
        .Text = tmp(0) '検索ワードを代入する。
        .Replacement.Text = tmp(1) '置換ワードを代入する。
        
        .Forward = True  '文書に対して末尾の方向(順方向)に検索する。
        .Wrap = wdFindContinue  '先頭(または末尾)に戻って検索をする。
        
        .Format = False  'フォーマット変更を有効する(True)、しない(False)を設定。
        .MatchCase = True  '英語の大文字と小文字の区別する(True)、しない(False)を設定。
        .MatchWholeWord = True '単語全体を検索対象とする(True)、しないを設定。
        .MatchByte = True '半角と全角を区別する(True)、しないを設定。
        .MatchAllWordForms = False '英単語の異なる活用形検索を有効(True)、無効(False)を設定。
        .MatchWildcards = False 'ワイルドカード(?*など任意の文字)を使った検索を有効(True)、無効(False)を設定。
        .MatchSoundsLike = False '誤った置換を防止するため、英語のあいまいな検索は無効(False)に設定。
        .MatchFuzzy = False '日本語のあいまいな検索は無効(False)に設定。

    End With
    
    '置換を実行(全て置換)する。
    Selection.Find.Execute Replace:=wdReplaceAll
    
Loop
Close #1

MsgBox "置換が完了しました。"

End Sub

上記マクロコードの意味としては、用語集 (CSVファイル) を一行ずつ上から見て、該当する単語 (A列) を探し、B列の単語に置き換え、用語集の最終行まで同じ処理を繰り返す、というものです。

4.2. 8行目のcsvFilePassを編集します。

csvFilePassのところは、実際の保存場所と実際のファイル名を記載するように編集してください。例:C:\Users\taro\OneDrive\ドキュメント\honyaku\\terms.csv

5. Wordマクロを配置

⇒上記手順4で準備したマクロを配置していきます。

5.1. 用語の一括置換をしたいWordファイルを開きます。

5.2. Alt+F11を押して、Microsoft Visual Basic for Applications のウィンドウを立ち上げます。

Wordメニューの [開発] ⇒ [Visual Basic] からでも開くことができますが、[開発]タブはデフォルトでは表示されていないため、見当たらなければ、Alt+F11が早いです。

5.3. Microsoft Visual Basic for Application sのウィンドウが立ち上がったら、メニューの [挿入] ⇒ [標準モジュール] を選択します。(以下の画像を参照)

マクロの配置1
マクロの配置1

5.4. 白っぽい画面が立ち上がります。(以下の画像を参照)

マクロの配置2
マクロの配置2

5.5. 中央の大きな白い箱の中にカーソルがあることを確認してから、上記手順4.1.と4.2.で準備したマクロコードを貼り付けます。(以下の画像を参照)

マクロの配置3
マクロの配置3

6. Wordマクロを実行

6.1. メニュー の [実行] ⇒ [Sub/ユーザーフォームの実行] を選択して、マクロを実行します。(以下の画像を参照)

マクロの実行
マクロの実行

6.2. しばらくすると (数秒から数十秒)、[置換が完了しました。] と出たら、Wordファイルの中を確認します。

置換完了
置換完了

6.3. 用語が指定した通りに正常に置換されていれば、成功です。

6.4. マクロコードを実行した、Microsoft Visual Basic for Applications のウィンドウは右上のXボタンで閉じます。

もし、実行直後に、以下のようなメッセージが出たら、上記手順4.2.で指定したフォルダやファイルが存在しないということですので、いま一度、ご確認ください。

ここでは [終了] を押せばOKです。

ファイルが見つかりません
ファイルが見つかりません

Wordマクロの課題

ただ、ここで1つの問題が見つかります。

検索対象にカンマ (,) が入っている単語だと置換されない

Wordマクロを用意したとき、普通のエクセルファイルをCSVファイルに保存しましたね。

CSVファイルは、カンマで単語と単語を区切っているのですが、このカンマが単語そのものの中に含まれていると、うまく置換してくれません。

例えば、次の単語のときです。

英語日本語
Bonaire, Sint Eustatius and Sabaボネール、シント・ユースタティウスおよびサバ
正常に置換されない単語の例

英語の中にカンマ (,) が入っています。

カンマが入っていると、「Bonaire, Sint Eustatius and Saba」をひとかたまりとして、検索することができません。

カンマが入っていても、正常に置換させるには、上記マクロコードを改修する必要があります。

ただ、改修のための工数を考えると、以下の回避策を行なった方が楽だと思っています。

置換されないときの回避策1 – 手動置換

Wordファイル上で、置換ダイアログを立ち上げて、手動で置換します。

手動で置換
回避策:手動で置換

置換されないときの回避策2 – あらかじめ原文ファイルと用語集を編集

あらかじめ、カンマが含まれた単語を検索対象としていることが分かっていれば、原文ファイル上でカンマを別の単語に変更し、同様に用語集でも同じ変更を行った上で、Wordマクロを使用した一括置換を行います。

回避策1の方が楽かもしれませんが・・・。

なお、当然ですが、原文にスペルミスが含まれている場合も、置換はされません。なので、事前にせよ、事後にせよ、ある程度の手作業は発生すると思っておいた方がよさそうです。

まとめ

上記のWordマクロを一度手元に用意してしまえば、あとは、用語集に追記したり、新しい用語集を作るだけで、一括置換をいつでも好きなときに実行することができます。

用語集のメンテはさほど労力のかかることではないので、このWordマクロによってだいぶ時短がはかれると思います。

翻訳者さん (翻訳者さんでなくても) の翻訳作業が少しでも楽になれば嬉しいです。

お読みいただき、ありがとうございました。

タイトルとURLをコピーしました