VBA(Microsoft Word)で引用テキストを検索する
Jenniferは、マクロで、スマートクォートまたはストレートクォート(または2つの組み合わせ)で囲まれた文字列を見つける方法を必要としています。彼女は、Wordのすべてのバージョンでそのようなテキストのすべてのインスタンスを見つけるためのFindメソッドのコマンドの適切な組み合わせを見つけることができないようです。
何が検索されているかを明確にすることが重要です。このヒントの前提は、マクロでは、引用符で囲まれた_any_文字列ではなく、引用符で囲まれた_specific_文字列を検索する必要があるということです。たとえば、「myquotedtext」と「morequotedtext」などの2つの引用文字列を含むドキュメントでは、両方の文字列ではなく、テキストがわかっている文字列の1つだけを事前に検索する必要があります。 。
この場合、ご存知のように、Findメソッドを使用しても問題ありません。問題は、あなたが求めるものにスマートクォートとストレートクォートの両方の可能性にどのように対応するかです。幸い、Findメソッドは、デフォルトで、ストレートクォートとスマートクォートの両方に互換的に一致します。重要な点は、検索に引用符を含めることを指定する方法を知っていることです。次のコードスニペットでうまくいくはずです:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = """my quoted text""" .Format = False .MatchWildcards = False End With Selection.Find.Execute
このコードの鍵は、情報が.Textプロパティにどのように割り当てられるかです。検索するもの(この場合は「引用されたテキスト」)は、両側が3つの引用符で囲まれていることに注意してください。この理由はかなり難解です。検索する文字列は引用符で囲む必要があります。これはVBAで必要です。これはここに示されています:
"my quoted text"
探しているものの最初に実際の引用符が必要なため、引用符文字を検索することを示すために、「区切り文字」として2番目の引用符を含める必要があります。これは、最初に3つの引用符があることを意味します:
"""my quoted text"
同じextra-quote-mark-as-delimiter手法が文字列の末尾にも適用されるため、コードスニペットに表示される内容になります。
コードが実行されると、Wordは、必要に応じて、ストレートクォートまたはスマートクォートの任意の組み合わせで囲まれた文字列を忠実に検出します。
このアプローチは、.MatchWildcardsプロパティをFalseに設定して、通常の検索を実行している場合にのみ機能することにも注意してください。
注:
このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。
(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(11638)は、Microsoft Word 97、2000、2002、および2003に適用されます。Wordのリボンインターフェイス(Word 2007)用のこのヒントのバージョンを見つけることができます。以降)ここ:
linkVBAで引用されたテキストを検索。