web-dev-qa-db-ja.com

Word / VBA Find ..ワイルドカードに置き換えてエスケープ</>

VBAを介してWord文書内の特別な単語をフォーマット(ハイライトなど)したいのですが。一般に、これはうまく機能しますが、このカスケードでは、<*>( "<"および ">"括弧で囲まれた単語。*はワイルドカードを意味しますが、括弧はそうではありません。バックスラッシュで角かっこを「エスケープ」しますが、これは機能しません。実行時エラー5623が発生します。置換テキストに範囲外のグループ番号が含まれています。

wrdDocResults.Select
With Selection.Find
    .Text = "\<*\>"
    .Replacement.Font.Color = wdColorBlue 
    .Forward = True           
    .Wrap = wdFindStop          
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll   

ご協力いただきありがとうございます!

1
Martin

これを試してみてください

Sub test()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "\<*\>"
    .Replacement.Font.Color = wdColorBlue
    .Forward = True
    .Wrap = wdFindStop
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
1
Raystafarian