0
H ey there,如何檢查MS Word中特定字符串的冗餘?
我需要檢查某個字符串是否在我的MS Word文檔中發現兩次。
我的方法到現在爲止是使用.Find方法來搜索字符串,如果.Execute是真的,那麼增加一個計數器。如果計數器大於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
爲什麼不做WIldcard查找?例如如果要查找的文本是「mytext」,則使用.MatchWildcards = True並搜索「mytext * mytext」 – 2014-03-26 14:13:13
部分工作,但在沒有冗餘時拋出錯誤肯定。更新我的OP – daZza
好的,當你使用以下內容時會發生什麼?我不明白你的意思,「直到它解析了整個文檔一次」 雖然wrdRange.Find.Execute redundancyCounter = redundancyCounter + 1 Wend – 2014-03-26 15:04:13