Vba 如何检查MS Word中特定字符串的冗余?

Vba 如何检查MS Word中特定字符串的冗余?,vba,excel,ms-word,Vba,Excel,Ms Word,嘿,在那里 我需要检查在我的MS Word文档中是否两次找到某个字符串 到目前为止,我的方法是使用.Find方法搜索字符串,如果.Execute为true,则增加计数器。如果计数器大于1,则会有一个消息框通知用户冗余 代码搜索字符串并正确地找到它,然而,.Find方法在解析整个文档一次之前似乎不会自行循环。因此计数器始终为1,消息框不会弹出 你们有谁知道如何循环这个代码吗?我似乎找不到合适的断裂条件 致意 达扎 代码: 编辑:带有匹配通配符的建议(在没有冗余时抛出假阳性) 为什么不使用通配符查找

嘿,在那里

我需要检查在我的MS Word文档中是否两次找到某个字符串

到目前为止,我的方法是使用.Find方法搜索字符串,如果.Execute为true,则增加计数器。如果计数器大于1,则会有一个消息框通知用户冗余

代码搜索字符串并正确地找到它,然而,.Find方法在解析整个文档一次之前似乎不会自行循环。因此计数器始终为1,消息框不会弹出

你们有谁知道如何循环这个代码吗?我似乎找不到合适的断裂条件

致意

达扎

代码:

编辑:带有匹配通配符的建议(在没有冗余时抛出假阳性)


为什么不使用通配符查找?e、 g.如果要查找的文本是“mytext”,则使用.MatchWildcards=True并搜索“mytext*mytext”部分有效,但在没有冗余时抛出假阳性。更新了我的OPOK,当您使用以下命令时会发生什么?当wrdRange.Find.Execute redundanncycounter=redundanncycounter+1运行时,我不明白您所说的“直到它解析了整个文档一次”是什么意思。谢谢
Dim wrdRange As Object
Dim searchString As String
Dim redundancyCounter As Integer


redundancyCounter = 0

Set wrdRange = wrdDoc.Content
wrdRange.Find.ClearFormatting
wrdRange.Find.Replacement.ClearFormatting


With wrdRange.Find
.Text = searchString
.Forward = True
.wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With

If wrdRange.Find.Execute Then
redundancyCounter = redundancyCounter + 1
Debug.Print redundancyCounter

If redundancyCounter > 1 Then
    MsgBox "Für diese Version existiert bereits eine Tabelle in der Änderungshistorie!" & vbNewLine & _
    "Bitte überprüfe die Änderungshistorie manuell und nimm ggf. Änderungen vor.", vbCritical, "Warnung, mögliche Redundanz erkannt!"

End If
End If
With wrdRange.Find
 .Text = searchString & "*" & searchString
 .Forward = True
 .wrap = wdFindStop
 .Format = False
 .MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With

If wrdRange.Find.Execute Then

    MsgBox "Für diese Version existiert bereits eine Tabelle in der Änderungshistorie!" & vbNewLine & _
    "Bitte überprüfe die Änderungshistorie manuell und nimm ggf. Änderungen vor.", vbCritical, "Warnung, mögliche Redundanz erkannt!"


End If
While wrdRange.Find.Execute 
  redundancyCounter = redundancyCounter + 1 
Wend