none
word-VBA)削除済み/置換済みの単語を、(変更履歴は記録したまま)検索/置換の対象から外したい RRS feed

  • 質問

  • お世話になります。

    VBA初心者です。

    wordでドキュメントレビューを行っており、多数の単語群を置換する必要に迫られ、

    以下のサイト/コードを参考に置換を行うマクロをこさえたのですが、

     ・他の方とブラッシュアップする都合上、変更履歴の記録をONにしたまま実行する必要があり、

     ・その状態で置換マクロを実行すると、変更履歴に存在している削除済み/置換済みの単語もFindされて置換対象となってしまい、困っております。

    変更履歴の記録はOFFにできないものの、表示モード「変更履歴/コメントなし」モードの状態で実行しても同様でした。

    変更履歴の記録をOFFにすれば、(当然ですが)本問題は発生しません。

    検索/置換対象から、変更履歴(削除/置換済み単語群)を除外する手法をご存じの方、

    いらっしゃれば是非ご教示いただければ幸いです。

    よろしくお願いいたします。

    https://qiita.com/t-yama-3/items/89300fbab045738b604e

    Sub FindByRange3()
        Dim rng As Range
        Set rng = ActiveDocument.Content
        rng.Find.Execute FindText:="又は", ReplaceWith:="または", Replace:=wdReplaceAll
        Set rng = Nothing
    End Sub

    https://hamachan.info/win8/word/macro.html

    With Selection.Find
    .Text = s(0)
    .Replacement.Text = s(1)
    .Forward = True
    .Wrap = wdFindContinue
    • 編集済み yamato777 2021年1月25日 13:13
    2021年1月25日 13:11

回答

すべての返信

  • こんにちは。

    下記記事で解説されていますように、変更履歴の表示をオフにしてから置換処理を行ってはいかがでしょうか。

    ・【コード】和暦を西暦にするWordマクロ(変更履歴オン版) | みんなのワードマクロ
    https://www.wordvbalab.com/code/1945/
    • 回答としてマーク yamato777 2021年1月30日 3:12
    2021年1月28日 4:51
  • きぬあさ様、ご回答ありがとうございます。

    解決いたしました。

    様々なパターンを試して、変更履歴の表示をオフにしても変換されてしまっていたため困っていたのですが、その際にはRangeオブジェクトを用いていました。

    RangeオブジェクトとSelectionオブジェクトの違いも意識せずに対応してしまっていましたが、Selectionオブジェクトを用いることで解決いたしました。

    ありがとうございました。

    2021年1月30日 3:11