我正在嘗試編寫一個宏,這將幫助我在完成編輯後校對科學論文,方法是查找並突出顯示一些常見的標點符號和間距錯誤(例如雙空格,標點符號周圍的不正確間距等)。我正在使用Word 2010.VBA - 在追蹤更改時在MS Word中使用.Find
下面的代碼對於沒有啓用「跟蹤更改」的Word文檔而言工作正常。它強調包含在目標列中的字符串的情況下,在紅:
Sub HighlightTargets2()
Dim range As range
Dim i As Long
Dim TargetList
TargetList = Array(" ", " ,", " .", " ?", " :", " ;", " -", " –", " —", "- ", "– ", "— ", ",,", "..", "::", ";;", "??", ",.", ".,", ",?", "?,", "?.", ".?", ";:", ":;", ";,", ";.", ".;", ".;", "^$(", "^$)", "(^$", "^#(", "^#)", ")^ #", "(^#") ' put list of terms to find here
For i = 0 To UBound(TargetList)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdRed
Loop
End With
Next
End Sub
的問題是,我只需要在文件的最後視圖來檢查這些錯誤。但是,當我使用這個宏時,它會在文檔中仍然存在「已刪除」(如已刪除,已刪除但尚未接受的更改)字符。
Consider this example (ignore the yellow highlights).正如你在這幅圖中看到的,我決定通過添加句點和刪除分號來分割原始句子。因此,在最終:顯示標記中,被拖拽的時間段和被刪除的分號似乎都是(。;)。即使我在「最終」視圖(而不是「最終:顯示標記」)上運行宏,.Find方法也會將這些「已刪除」字符仍保留在文本中。這意味着我的代碼不起作用,因爲會發生以下效果(如下圖所示)。
一個可能的解決方法是打開word的另一個實例,複製和粘貼一切從文件中的文本(選擇「最後」,顯然後),運行在字的新實例宏。然後,我不得不尋找新單詞突出顯示的錯誤,並手動查找它們(並修復它們)。
有沒有辦法讓.Find方法只搜索在「最終」視圖中查看文檔時出現的文本,並忽略在跟蹤更改打開時被刪除的文本?
謝謝,但是,我必須發送這些文件而不接受更改,以便原始作者可以看到我的更正。 –