Visual Basic for Applications 中“或”的管道符号

aag*_*aag 0 vba ms-word

我广泛使用 MS Word 的语音转文本功能,但它经常将我的逗号解释为“注释”或“常见”。我要求 ChatGPT 编写一个修复宏(见下文),它建议使用:.Text = "comment|common"。我喜欢使用管道符号来提供逻辑“OR”的想法,但它似乎不适用于 MS Word。是ChatGPT的错还是微软的错?无论如何,有没有办法将布尔逻辑设计到 VBA .Find 语句中?

Dim myRange As Range
Set myRange = ActiveDocument.Content
With myRange.Find
    .Text = "comment|common"
    .Replacement.Text = ","
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
myRange.Find.Execute Replace:=wdReplaceAll
End Sub
Run Code Online (Sandbox Code Playgroud)

Tod*_*son 5

您可以使用通配符来匹配这两个单词。

搜索表达式<comm[eo][nt]{1,2}>将匹配 common 和 comment。

  • <单词的开头
  • comm匹配 comment 和 common 的开头
  • [eo]匹配“e”或“o”之一
  • [nt]{1,2}匹配“n”、“t”、“nt”、“nn”或“tt”。我想不出更干净的方法来获得两个词尾。
  • >一个词的结尾
Dim myRange As Range
Set myRange = ActiveDocument.Content
With myRange.Find
   .Text = "<comm[eo][nt]{1,2}>"
   .Replacement.Text = ","
   .Forward = True
   .Wrap = wdFindContinue
   .Format = False
   .MatchCase = False
   .MatchWholeWord = False
   .MatchWildcards = True
   .MatchSoundsLike = False
   .MatchAllWordForms = False
End With
myRange.Find.Execute Replace:=wdReplaceAll
Run Code Online (Sandbox Code Playgroud)