Simaoには、多くの検索と置換を行うマクロがいくつかあります。ただし、マクロが終了したら、検索を復元し、マクロを実行する直前に有効だったパラメーターにパラメーターを置き換えたいと考えています。そのため、Simaoは、検索および置換するすべてのプロパティをどこで見つけて、各マクロの開始時にそれらを保存し、最後にそれらを復元できるのか疑問に思います。

Simaoがほのめかしているように、「グッドプラクティス」とは、マクロが実行される前の状態に変更されたものをマクロに返すことです。

そうすれば、マクロがユーザーが行っている可能性のある他のことを台無しにすることはありません。

このプラクティスを実装する際のアイデアは、次の手順に従うことです。

。マクロが何を変更するかを把握します。変更されるすべてのプロパティを格納する変数を作成します。作成した変数にプロパティを保存します。仕事をしなさい 。手順3で以前に設定した変数からこれらのプロパティを復元します

ここで重要なのはステップ1です。マクロが何を変更するかがわからない場合は、他のステップに進むことができません。検索と置換の操作を行うと、関与する可能性のあるオブジェクトが多数あり、それぞれにかなりの数のプロパティがあります。

物事を理解する簡単な方法の1つは、検索と置換操作を実行するマクロを記録してから、レコーダーが生成するコードを確認することです。たとえば、「the」という単語の検索を記録しました

そしてそれを「THE」という言葉に置き換えます。マクロレコーダーを停止して、それが作成したものを確認したとき、これは私が見たものの関連部分です:

Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find     .Text = "the"

.Replacement.Text = "THE"

.Forward = True     .Wrap = wdFindContinue     .Format = False     .MatchCase = True     .MatchWholeWord = False     .MatchWildcards = False     .MatchSoundsLike = False     .MatchAllWordForms = False End With

このコードの最初の2行にすぐに戻りますが、生成された他のすべての行を見てみましょう。 .Findオブジェクトを使用すると、プロパティのパッセル全体が指定されます。これらは、[検索と置換]ダイアログボックスの設定に対応するプロパティです。これで、少なくとも定義する必要のある変数のリストができたので、これらの各プロパティの設定を保存して、後で復元することができます。

ここで、コードの最初の2行に戻ります。それらは軟膏の主要なハエを表しています。 .ClearFormattingメソッドは、検索および置換操作用に定義されたフォーマットをすべて削除します。検索と置換でフォーマットを定義した場合に影響を受けるプロパティを確認するために、同じ検索と置換操作のマクロを再度記録しましたが、今回は置換テキストを太字で下線付きにするように指定しました。上記の2行目の直後に追加された4つのコード行を除いて、レコーダーが記録したものはすべて同じでした。

With Selection.Find.Replacement.Font     .Bold = True     .Underline = wdUnderlineSingle End With

これらは、置換で使用したいフォーマットを指定する行です。前のコードでは、マクロレコーダーは.Findオブジェクトのすべてのプロパティを表示します。この場合、記録されるのは私が変更しているものだけです。これはたまたま.Fontオブジェクトにあります。残念ながら、.Fontオブジェクト以外に、.Paragraph、.Tabs、.Languageなどを指定できるオブジェクトがあります。さらに、これらは.Findオブジェクトだけでなく、.Replacementオブジェクトにも設定できます。これは、保存および復元する必要のある何百ものプロパティの可能性です。

不可能に聞こえますか?おそらく不可能ではありませんが、それは間違いなく困難です。マクロを記録する方法を使用して、検索(または置換。概念は同じ)を実行し、検出または置換される可能性のあるすべての可能なフォーマットプロパティのフォーマットを変更する必要があります。

あなたがそれを成功させるならば、あなたはかなりのリストになってしまうでしょう。

たとえば、Selection.Find.Fontオブジェクト用に生成されたコードは次のとおりです。

With Selection.Find.Font     .Size = 14     .Bold = True     .Underline = wdUnderlineSingle     .StrikeThrough = True     .DoubleStrikeThrough = False     .Hidden = True     .SmallCaps = True     .AllCaps = False     .Color = wdColorRed     .Superscript = True     .Subscript = False End With

つまり、保存およびリセットする11の異なるプロパティ。ちょっと待って!

もっとあります! (ギンスナイフのコマーシャルのように聞こえますか?)[フォントの検索]ダイアログボックスの[詳細設定]タブで変更を加えなかったため、間違いなくこのリストが展開されていました。 .Fontオブジェクトのプロパティの総数については、そのオブジェクトのプロパティに関するMicrosoftのドキュメントを参照してください。 (ページの左側にあるドロップダウンリストを使用して、.Fontオブジェクトの[プロパティ]リンクを展開してください。)

https://docs.microsoft.com/en-us/office/vba/api/word.font

そこには50を超えるプロパティが表示されます。また、.Replacementオブジェクトに属する別の.Fontオブジェクトがあり、他の書式設定要素(.Paragraph、.Tabsなど)用の同様のペアオブジェクトがあることを忘れないでください。

間違いなく気が遠くなる。

検索と置換操作を実行するときに影響を受けるプロパティの数を理解すると、多くの人が操作の書式設定の保存と復元を忘れる理由を理解し始めます。それは実行可能です。しかし、それはマイナーな仕事ではありません。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(13762)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice365のWordに適用されます。