先日の上書き翻訳セミナーの参加者からいただいた質問で調べて気がついたのですが、ワイルドカードと変更履歴は相性が悪いですね。私は変更履歴を使わないので気づいていませんでした。
ワイルドカードで\1, \2などを用いて置換をする場合には、変更履歴の記録をオフにしてください。思わぬ落とし穴があります。
不具合の現象
たとえば、以下のような置換をしようとします。
検索する文字列:([0-9]{1,}) singers 置換後の文字列:歌手\1人
つまり、「100 singers」 を 「歌手100人」 に置換します。
ところが、変更履歴の記録をオンにしたままで置換をすると、以下のようになります。
つまり、「100歌手人」と置換されてしまうのです!
困ります。
対策
この回避策は「変更履歴の記録をオフにする」です。
調べてみたところ、実は2006年からこのバグは報告されており、2017年現在も最新版のWordでバグが残っています。
Wildcard Find and Replace with Track Changes
クライアントによっては修正箇所を変更履歴として残しておく必要があると思うので、上記のページで Jay Freedman さんが回答されているように、以下のようにすればよいと思います。
- 変更履歴の記録をオフにする
- ワイルドカードで置換をする
- 変更履歴の記録をオンにする
- 置換箇所を以下の組み合わせで置換する
検索する文字列:歌手[0-9]{1,}人 置換後の文字列:^&
置換後の文字列に入力した ^& は、「検索する文字列でヒットした文字列」のことです。
よって、以下のように変更履歴に記録されます。
苦肉の策ですが、修正した箇所をクライアントに示す必要があるのであれば上記のとおりになります。