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

时间:2014-03-26 09:45:04

标签: vba excel-vba ms-word excel

在那里,

我需要检查MS Word文档中是否找到了两次字符串。

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

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

你们有没有想过如何循环这段代码?我似乎找不到合适的休息条件......

最好的问候

daZza

代码:

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

编辑:使用MatchWildcards建议(没有冗余时抛出误报)

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

1 个答案:

答案 0 :(得分:0)

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