- ベストアンサー
変更履歴オンでのワイルドカードの置換について
- 変更履歴をオンにした状態でワイルドカードの置換を行うと、変更履歴がオフの状態と異なる結果になります。
- 変更履歴をオンにしたまま正しく置換する方法を教えてください。
- 環境はWord2007とWindows 7ですが、Windows 8とWord2013でも同様の結果になります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1の回答者です。 No.2で説明した私の手順やフォーラムモデレーターが行ったと思われる 手順と、質問者さんの手順の違いが判りました。 変更履歴を記録する手順の問題だと思います。 変更履歴を記録していない状態のテキストが書かれた文書が用意されて いて、変更履歴の記録を実行後に置換をしたためですね。この場合は、 置換を実行した段階で置換後の文字列を挿入し、検索する文字列を削除 する手順になっているためのようです。 ワイルドカードを使わなくても、挿入+削除の組み合わせで置換された 結果が表示されますよね。 私やフォーラムモデレーターがした手順は、変更履歴を記録した文書に テキストを入力し、挿入された履歴を記録してから置換を実行する手順 をしたために、挿入されたテキストへの置換の場合は単純な置換になる ためですね。質問者さんが示した手順の(2)と(3)が逆にしたときの動作 だと問題なく置換されるということです。 このような動作がある以上、[変更履歴の記録]をしたままの置換をする のは問題が起きやすくなるのだと思います。 変更履歴の記録を有効にしたままワイルドカードでの置換を使う場合、 ワイルドカード以外と置換したい文字列とでは、ワイルドカードの対象 文字列が先に置換され、その後ろにワイルドカードの前後にある文字列 を挿入する仕様みたいです。そのため、 変更履歴オン:をるあわせと にような組み合わせでの置換になるようです。 このようにワイルドカードの使い方の問題もありますが、置換する手順 として変更履歴の記録をしてからの実行には問題があるのです。 一応、ワイルドカードのみにしての置換なら、挿入+削除の組み合わせ で置換後の文字列が挿入された後ろに検索する文字列が削除する履歴に することは可能です。 【手順】(Wordは立ち上がっている前提です) (1)「あわせ」を事前にクリップボードにコピーしておきます。 (2)「を併せると」と入力(この時点では変更履歴はオフです) (3)変更履歴をオンにする (4)置換ウィンドウに以下を入力 検索する文字列:([!合])併せ([!も]) 置換後の文字列:\1^c\2 (5)置換のオプションのワイルドカードをオンにする (6)変更履歴の表示は「すべての変更履歴」にしておく (7)置換の実行 これで挿入履歴の「をあわせる」+削除履歴の「を併せる」の組み合わせ での置換が実行されます。 これを研究して、VBAに組み込んでみてはいかが。
その他の回答 (2)
- enunokokoro
- ベストアンサー率74% (3543/4732)
同じ質問を、こちら↓にもしていますね。 http://answers.microsoft.com/ja-jp/office/forum/office_2007-word/%e5%a4%89%e6%9b%b4%e5%b1%a5%e6%ad%b4%e3%81%ae/61ec5d6d-116a-4360-b517-f5771a251b23 コミュニティのほうは参加していませんので、ここで少しアドバイス。 [ワイルドカード]とかは関係なく、あくまでも置換対象が変更履歴での [削除した文字列]であることが原因です。 [ワイルドカード]を使っていても、フォーラムモデレーターは変更履歴 の記録をしている状態で、挿入した文字列を置換しているだけなので、 記録していても問題なく置換された画像を提示されたのだと思います。 [ワイルドカード]を使わなければ、置換がされた文字列でのトラブルは ないのでしょうが、それでは応用ができないのも確かです。 [ワイルドカード]を使っての置換をしたいのであれば、削除した文字列 を対象にしないVBAを組むしかないと思います。
補足
ご回答ありがとうございます. 現在,ご紹介いただいたリンク先の記事も参考してVBAを組んでおりまして,一度削除された箇所は置換の対象とはなっておりません. つまり,置換対象は[削除した文字列]になっていないと思います. ただ,Wordコミュニティのモデュレーターの方もご回答者様も,同様の現象は認められないと仰っているので,何かしらこちらの設定や方法が間違っているのだと思います. こちらでもWindows8.1,Word2013の環境で以下の方法で試したのですが,やはり変更履歴がオンだとうまくいきません. 【手順】 (1)Wordを起動 (2)「を併せると」と入力(この時点では変更履歴はオフです) (3)変更履歴をオンにする (4)置換ウィンドウに以下を入力 検索する文字列:([!合])併せる([!も]) 置換後の文字列:\1あわせ\2 (5)置換のオプションのワイルドカードをオンにする (6)変更履歴の表示は「すべての変更履歴」にしておく (7)置換の実行 (8)正しく置換されない結果が表示されます. お手数ですが,どのような手順で変更履歴をオンにしたまま,上記ワイルドカードを利用して正しく置換されたのかをお教えいただけないでしょうか. 何卒よろしくお願い申し上げます.
- enunokokoro
- ベストアンサー率74% (3543/4732)
私はWindows8.1のWord2013ですが、同じような動作は削除をした 文字列以外にはなりませんね。 添付画像を見ると、[変更履歴の記録]をしたままの置換後の文字列が、 おそらく削除の設定での対象になっていますよね。 通常は、置換後の文字列だと削除されずに置換された状態になるので、 削除の履歴が付くことはありません。 削除した文字列も対象にすると、削除した文字列では質問にあるような 動作をします。けれど、一般的には削除した文字列を対象にした置換は 無意味だと思います。削除した文字列と同じ削除されていない文字列も 置換の対象だと、削除した文字列のほうしか履歴としては残りません。 しかも、削除したはずなのに置換後は挿入した文字列として残ります。 このような使い方はトラブルの原因になるのではないかと思いますよ。 削除した文字列を対象にしない方法を検討するか、削除した文字列だけ 元に戻してから置換をしてはいかが。 http://www.yamanekonote.com/22793263562365327508123993262225563235503593722806123911237712290.html
お礼
ご連絡ありがとうございました. 当初よりこちらの説明に不足があったようで失礼いたしました. ご指摘のように,こちらの要件は「既存の文書に対して変更履歴をオンにした後のワイルドカードを用いた置換」になります. Wordの仕様でワイルドカードを用いた場合「検索する文字列」全体が一語として扱われないということが了解できました. クリップボードを使う方法でこちらの要件を満たす置換となりました. ご教示ありがとうございました. ワイルドカードの置換リストが1000語以上あるので速度が気になるところですが,VBAで正規表現と一緒に検証してみたいと思います. この度はありがとうございました.