変更履歴オンでのワイルドカードの置換について

このQ&Aのポイント
  • 変更履歴をオンにした状態でワイルドカードの置換を行うと、変更履歴がオフの状態と異なる結果になります。
  • 変更履歴をオンにしたまま正しく置換する方法を教えてください。
  • 環境はWord2007とWindows 7ですが、Windows 8とWord2013でも同様の結果になります。
回答を見る
  • ベストアンサー

変更履歴オンでのワイルドカードの置換について

変更履歴をオンにした状態でワイルドカードの置換を行うと,変更履歴がオフの状態と違う結果になります. 環境:Word2007,Windows 7    ※Windows 8,Word2013でも同様の結果になりました. 例) 変換対象文字列:「を併せると」    検索する文字列:([!合])併せ([!も])    置換後の文字列:\1あわせ\2 置換結果)    変更履歴オフ:をあわせると    変更履歴オン:をるあわせと ワイルドカードの記述の仕方がよくないのでしょうか. お手数ですが,変更履歴をオンにしたまま正しく置換される方法をお教えいただきたいと存じます. よろしくお願いいたします.

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

No.1の回答者です。 No.2で説明した私の手順やフォーラムモデレーターが行ったと思われる 手順と、質問者さんの手順の違いが判りました。 変更履歴を記録する手順の問題だと思います。 変更履歴を記録していない状態のテキストが書かれた文書が用意されて いて、変更履歴の記録を実行後に置換をしたためですね。この場合は、 置換を実行した段階で置換後の文字列を挿入し、検索する文字列を削除 する手順になっているためのようです。 ワイルドカードを使わなくても、挿入+削除の組み合わせで置換された 結果が表示されますよね。 私やフォーラムモデレーターがした手順は、変更履歴を記録した文書に テキストを入力し、挿入された履歴を記録してから置換を実行する手順 をしたために、挿入されたテキストへの置換の場合は単純な置換になる ためですね。質問者さんが示した手順の(2)と(3)が逆にしたときの動作 だと問題なく置換されるということです。 このような動作がある以上、[変更履歴の記録]をしたままの置換をする のは問題が起きやすくなるのだと思います。 変更履歴の記録を有効にしたままワイルドカードでの置換を使う場合、 ワイルドカード以外と置換したい文字列とでは、ワイルドカードの対象 文字列が先に置換され、その後ろにワイルドカードの前後にある文字列 を挿入する仕様みたいです。そのため、   変更履歴オン:をるあわせと にような組み合わせでの置換になるようです。 このようにワイルドカードの使い方の問題もありますが、置換する手順 として変更履歴の記録をしてからの実行には問題があるのです。 一応、ワイルドカードのみにしての置換なら、挿入+削除の組み合わせ で置換後の文字列が挿入された後ろに検索する文字列が削除する履歴に することは可能です。 【手順】(Wordは立ち上がっている前提です) (1)「あわせ」を事前にクリップボードにコピーしておきます。 (2)「を併せると」と入力(この時点では変更履歴はオフです) (3)変更履歴をオンにする (4)置換ウィンドウに以下を入力   検索する文字列:([!合])併せ([!も])    置換後の文字列:\1^c\2 (5)置換のオプションのワイルドカードをオンにする (6)変更履歴の表示は「すべての変更履歴」にしておく (7)置換の実行 これで挿入履歴の「をあわせる」+削除履歴の「を併せる」の組み合わせ での置換が実行されます。 これを研究して、VBAに組み込んでみてはいかが。

XML_beginner
質問者

お礼

ご連絡ありがとうございました. 当初よりこちらの説明に不足があったようで失礼いたしました. ご指摘のように,こちらの要件は「既存の文書に対して変更履歴をオンにした後のワイルドカードを用いた置換」になります. Wordの仕様でワイルドカードを用いた場合「検索する文字列」全体が一語として扱われないということが了解できました. クリップボードを使う方法でこちらの要件を満たす置換となりました. ご教示ありがとうございました. ワイルドカードの置換リストが1000語以上あるので速度が気になるところですが,VBAで正規表現と一緒に検証してみたいと思います. この度はありがとうございました.

その他の回答 (2)

回答No.2

同じ質問を、こちら↓にもしていますね。 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を組むしかないと思います。

XML_beginner
質問者

補足

ご回答ありがとうございます. 現在,ご紹介いただいたリンク先の記事も参考してVBAを組んでおりまして,一度削除された箇所は置換の対象とはなっておりません. つまり,置換対象は[削除した文字列]になっていないと思います. ただ,Wordコミュニティのモデュレーターの方もご回答者様も,同様の現象は認められないと仰っているので,何かしらこちらの設定や方法が間違っているのだと思います. こちらでもWindows8.1,Word2013の環境で以下の方法で試したのですが,やはり変更履歴がオンだとうまくいきません. 【手順】 (1)Wordを起動 (2)「を併せると」と入力(この時点では変更履歴はオフです) (3)変更履歴をオンにする (4)置換ウィンドウに以下を入力  検索する文字列:([!合])併せる([!も])  置換後の文字列:\1あわせ\2 (5)置換のオプションのワイルドカードをオンにする (6)変更履歴の表示は「すべての変更履歴」にしておく (7)置換の実行 (8)正しく置換されない結果が表示されます. お手数ですが,どのような手順で変更履歴をオンにしたまま,上記ワイルドカードを利用して正しく置換されたのかをお教えいただけないでしょうか. 何卒よろしくお願い申し上げます.

回答No.1

私はWindows8.1のWord2013ですが、同じような動作は削除をした 文字列以外にはなりませんね。 添付画像を見ると、[変更履歴の記録]をしたままの置換後の文字列が、 おそらく削除の設定での対象になっていますよね。 通常は、置換後の文字列だと削除されずに置換された状態になるので、 削除の履歴が付くことはありません。 削除した文字列も対象にすると、削除した文字列では質問にあるような 動作をします。けれど、一般的には削除した文字列を対象にした置換は 無意味だと思います。削除した文字列と同じ削除されていない文字列も 置換の対象だと、削除した文字列のほうしか履歴としては残りません。 しかも、削除したはずなのに置換後は挿入した文字列として残ります。 このような使い方はトラブルの原因になるのではないかと思いますよ。 削除した文字列を対象にしない方法を検討するか、削除した文字列だけ 元に戻してから置換をしてはいかが。 http://www.yamanekonote.com/22793263562365327508123993262225563235503593722806123911237712290.html

関連するQ&A

  • WORDのワイルドカード置換について

    WORDで、ワイルドカード[0-9]で半角数字を検索し(検索は出来ました)、これを全角数字に置換したいとき、置換後の文字列はどういう風に入力したらよいでしょうか。全角数字の表示形式が分かりません。[0-9]では出来ませんでした。 文字種の変換で行うしかないのでしょうか?

  • wordのワイルドカードを使った置換について

    word2007でワイルドカードを使った置換をしたいと思いますが、うまくいきません。 数字の前の全角空白を半角空白にしたいと思います。、数字は全て半角です。 ○全角空白 △半角空白として 「第○1章」を「第△1章」と置換したいと思います。 置換で検索する文字列に 「○([0-9])」 置換後の文字列       「△\1」 と指定すると、置換後の結果は 「第1△章」 となります。 どうしてでしょうか。 どのように指定すればよいのかお教えください。 インストールしているアプリと関係があるということはあるでしょうか。そんなに複雑な使い方はしていませんが…… よろしくお願いいたします。

  • ワードのワイルドカードを使った置換について

    ワードでワイルドカードを使って置換をしたいのですが、うまくいきません。 数字の前の全角スペースを半角スペースに変えたいのです。 置換でワイルドカードを使用するにチェックを入れ、 検索する文字列は「全角スペース[0-9]」 置換後の文字列は「半角スペース\1」 として実行してみたのですが、 〔置換後の文字列〕に指定できない範囲の番号が含まれています というメッセージが出ます。 全角スペース[0-9]はきちんと認識しているようで、検索まではうまくいっているようですが、 置換後の指定の仕方が悪いようなのです。 お教えいただければと思います。 よろしくお願いいたします。

  • ワードでの変更履歴について

    変更の履歴についての質問です。 本文中の「A」という文字を「B」に履歴付きで変更したいとします。 しかし、一括で「すべて置換」にすると既に訂正されている(削除線が付いている)ところの「A」まで拾って「B」に変換してしまい、結果、その部分は反映後には「BB」と表示されてしまいます。 あとでまた「BB」を「B」に一括置換すればいいのでしょうが、それ以前に「既に消されている文字は置換の対象にならない」という方法はないでしょうか?

  • 置換時にワイルドカードを使って複写することは可能でしょうか?

    カテゴリーこちらでよろしいか不安ですが、よろしくお願い致します。 HTMLに置換えたい文字列が複数ありますが、置換方法がわかりません。 「カテゴリー/*">名前</A>」の *の部分の違う文字列が一つのHTML内にたくさんあり、 それを 「カテゴリー/*">*</A>」と置換したいのです。 カテゴリー/*">名前</A>  ↓ カテゴリー/*">*</A> ということです。 ご覧の通り、ワイルドカードを使って複写したいのですが・・・。 調べてみたのですが、Wordではワイルドカードで検索 したものを置換え後に反映させることはできないらしく、ただ「カテゴリー/*">*</A>」という文字列になってしまいます。 TextSSでは、検索文字列と置換後文字列の中のワイルドカードの数が違うと置換実行さえできません。 何か良い方法があるものでしょうか? どうぞよろしくお願い致します。

  • wordのワイルドカードを使用しての置換について

    word2007を使用しています。 置換を簡単に行うために、ワイルドカードを使用したいのですが、どのような指定をしたらよいでしょうか。お知恵をお貸しください。 やりたい内容は次のようなものです。 ・行頭から始まる「文字列1(文字列2)」のような形を見つけ、文字列1の前に★をつける。 (例)下記のような<文章1>を<文章2>のように置換する。 <文章1> あいうえお(かきくけこ) さしすせそ たちつてと あああ(いいい) ううううう えええ(おおお) <文章2> ★あいうえお(かきくけこ) さしすせそ たちつてと ★あああ(いいい) ううううう  えええ(おおお) よろしくお願いいたします。

  • MS Word の変更履歴で取り消し線が出ない

    Windows 2000 Professional上のOffice XPのWordですが、変更履歴の記録をONにして履歴を記録している状態での問題です。挿入文字列は下線付きの赤字になるのですが、削除文字列は色が赤に変わるだけで取り消し線が現れません。これでは使えません。解決方法を教えてください。なお、吹き出しでの履歴表示は正常に行われます。Wordの導入が不完全だったかも知れないと思いOffice XPのCD-ROMで修復作業をしてみましたが状況は変わりません。 よろしくお願いします。

  • 文字列の置換

    文字列の置換 たとえば, if(abcd) という文字列があったときに,これを while(abcd){ に置換するにはどうすればいいでしょうか(同じような置換をしたいところが文章中にいくつもあるとします).つまり,文字列の一部をそのままにして置換するということです.いまの場合だと if( → while( はできたとしても, ) → ){ は,文章中に“)”がたくさんある場合は難しいですよね.wordなら,ワイルドカードを使って if(*) とすれば,検索はできるのですが,そのまま置換すると while(*){ となってしまい,*がそのまま残ってしまいます.どうにかできないでしょうか?

  • 「置換」ダイアログで上書きをオフにするには

    「置換」ダイアログで「置換後の文字列」において文字を挿入して、一部変更するとき、上書きしないようにするにはどうするのですか。つまり、例えば「置換後の文字列」で「carryout」を「carry out」に変更するとき、yの後にカーソルを置いてスペースを入れると、oが消えてしまうのです。 word2000使用

  • ワードのワイルドカードについて

    ワードのワイルドカードを使用して置換を行おうとしているのですがうまくいきません。 ¥に置き換えたいのですが、”指定できない範囲の番号”とでてきてしまいます。 元の文字列 かきくけこあいうえお 検索する文字列 かきく(*)あいうえお 置き換え後の文字列 (?) あいうえお\1 (?) 期待する置換後結果 \ あいうえおけこ \  ←¥で囲みたいのです。 (?)の部分に \\としたり、\0としたりGoogleで検索してみたのですが、見つけられませんでした。 ご存知の方がいらっしゃいましたら教えていただけないでしょうか? よろしくお願いいたします。

専門家に質問してみよう