2016-10-13 47 views
2

我正在嘗試編寫一個宏,這將幫助我在完成編輯後校對科學論文,方法是查找並突出顯示一些常見的標點符號和間距錯誤(例如雙空格,標點符號周圍的不正確間距等)。我正在使用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方法也會將這些「已刪除」字符仍保留在文本中。這意味着我的代碼不起作用,因爲會發生以下效果(如下圖所示)。

Wrong Highlight

一個可能的解決方法是打開word的另一個實例,複製和粘貼一切從文件中的文本(選擇「最後」,顯然後),運行在字的新實例宏。然後,我不得不尋找新單詞突出顯示的錯誤,並手動查找它們(並修復它們)。

有沒有辦法讓.Find方法只搜索在「最終」視圖中查看文檔時出現的文本,並忽略在跟蹤更改打開時被刪除的文本?

回答

0

爲Word視爲跟蹤的變化是文檔的一部分,直到更改被接受,可以接受執行你的代碼之前的所有修訂:

私人小組AcceptAllChanges() 昏暗斯特雷作爲對象

For Each stry In ActiveDocument.StoryRanges 
    If stry.Revisions.Count >= 1 Then _ 
    stry.Revisions.AcceptAll 
Next 

End Sub

+0

謝謝,但是,我必須發送這些文件而不接受更改,以便原始作者可以看到我的更正。 –

相關問題