Wordマクロが使えれば、翻訳時にマニュアルでやっていた作業を一瞬で終わらせることができます。
翻訳をしていて、訳文を考えるまでもないのに、量が多くて、考える時間よりも作業をする時間が惜しくなるときがあります。
例えば、固有名詞を翻訳する、数字を漢数字に変換する、表記のゆれを統一する、といったケースです。
いつもどうやったら効率的に翻訳できるかということを考えています。(「翻訳を効率化させるコツ5選」)
この記事では、Wordファイルの中に大量に出てくる固有名詞 (英語) を、早く正確に置換するためのWordマクロを使った方法をご紹介します。
もちろん、すべて無料でできますので、安心してお試しください。
Wordマクロを使うまでは
ちなみに、Wordマクロの存在は知っていましたが、マクロを組むのが自分にはできそうになくて、ろくに調べもせずに、しばらく放置をしていました。
いや、少しはネットで調べたのです。
新田順也さんのサイト、みんなのワードマクロで紹介されていた「上書き翻訳ツール」というものがあることを知って、興味を持ちました。
なお、「上書き翻訳ツール」の試用期間は30日で、購入するならシェアウェアとして7,500円で手に入ります。
7,500円を投資すべきか迷った末、投資せずに何か別の方法を、と思って色々調べた結果がこの記事になりました。
効率の悪い方法
Wordマクロを自分で作れると分かるまでは、以下のようなアナログな方法でやっていました。
- 用語集をエクセルで作成する (原文+訳文の2列)
- 1の用語集と、翻訳対象のWordファイルを両方開く
- 置換ダイアログを立ち上げ、検索する文字列、置換後の文字列、それぞれを入力し置換
- 3-4をすべての単語が置換されるまで繰り返す
- マウス操作とキーボード操作で、手首が痛くなる
非効率的なこと、この上なしでした。
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. C列で降順ソート
2.1. C1のセルが選択された状態 (←これ大事) で、Excelメニューの [ホーム] ⇒ [並べ替えとフィルター] ⇒ [降順]を選択します。(以下の画像を参照)
2.2. C列で降順ソートされました。(以下の画像を参照)
3. CSV形式で保存
文字列の長さで降順ソートができたら、C列は不要なので削除し、CSV形式で保存します。手順は以下の通りです。
3.1. C列を行ごと削除して、A列とB列のみにします。
3.2. Excelメニューの [ファイル] ⇒ [名前を付けて保存] を選択し、ファイル名 (何でもOK) を指定し、ファイルの種類として、CSV (コンマ区切り)(*.csv) を選択します。(保存先はどこでもOK)
4. Wordマクロを用意
4.1. 以下のマクロコードを上から下までコピーして、Windows標準のメモ帳や、TeraPadなどに貼り付けます。
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
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 のウィンドウを立ち上げます。
5.3. Microsoft Visual Basic for Application sのウィンドウが立ち上がったら、メニューの [挿入] ⇒ [標準モジュール] を選択します。(以下の画像を参照)
5.4. 白っぽい画面が立ち上がります。(以下の画像を参照)
5.5. 中央の大きな白い箱の中にカーソルがあることを確認してから、上記手順4.1.と4.2.で準備したマクロコードを貼り付けます。(以下の画像を参照)
6. Wordマクロを実行
6.1. メニュー の [実行] ⇒ [Sub/ユーザーフォームの実行] を選択して、マクロを実行します。(以下の画像を参照)
6.2. しばらくすると (数秒から数十秒)、[置換が完了しました。] と出たら、Wordファイルの中を確認します。
6.3. 用語が指定した通りに正常に置換されていれば、成功です。
6.4. マクロコードを実行した、Microsoft Visual Basic for Applications のウィンドウは右上のXボタンで閉じます。
Wordマクロの課題
ただ、ここで1つの問題が見つかります。
検索対象にカンマ (,) が入っている単語だと置換されない
Wordマクロを用意したとき、普通のエクセルファイルをCSVファイルに保存しましたね。
CSVファイルは、カンマで単語と単語を区切っているのですが、このカンマが単語そのものの中に含まれていると、うまく置換してくれません。
例えば、次の単語のときです。
英語 | 日本語 |
Bonaire, Sint Eustatius and Saba | ボネール、シント・ユースタティウスおよびサバ |
英語の中にカンマ (,) が入っています。
カンマが入っていると、「Bonaire, Sint Eustatius and Saba」をひとかたまりとして、検索することができません。
カンマが入っていても、正常に置換させるには、上記マクロコードを改修する必要があります。
ただ、改修のための工数を考えると、以下の回避策を行なった方が楽だと思っています。
置換されないときの回避策1 – 手動置換
Wordファイル上で、置換ダイアログを立ち上げて、手動で置換します。
置換されないときの回避策2 – あらかじめ原文ファイルと用語集を編集
あらかじめ、カンマが含まれた単語を検索対象としていることが分かっていれば、原文ファイル上でカンマを別の単語に変更し、同様に用語集でも同じ変更を行った上で、Wordマクロを使用した一括置換を行います。
回避策1の方が楽かもしれませんが・・・。
まとめ
上記のWordマクロを一度手元に用意してしまえば、あとは、用語集に追記したり、新しい用語集を作るだけで、一括置換をいつでも好きなときに実行することができます。
用語集のメンテはさほど労力のかかることではないので、このWordマクロによってだいぶ時短がはかれると思います。
翻訳者さん (翻訳者さんでなくても) の翻訳作業が少しでも楽になれば嬉しいです。
お読みいただき、ありがとうございました。