2014-03-26 105 views
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 
+0

爲什麼不做WIldcard查找?例如如果要查找的文本是「mytext」,則使用.MatchWildcards = True並搜索「mytext * mytext」 – 2014-03-26 14:13:13

+0

部分工作,但在沒有冗餘時拋出錯誤肯定。更新我的OP – daZza

+0

好的,當你使用以下內容時會發生什麼?我不明白你的意思,「直到它解析了整個文檔一次」 雖然wrdRange.Find.Execute redundancyCounter = redundancyCounter + 1 Wend – 2014-03-26 15:04:13

回答

0
While wrdRange.Find.Execute 
    redundancyCounter = redundancyCounter + 1 
Wend 
相關問題