2016-10-13 25 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

谢谢,但是,我必须发送这些文件而不接受更改,以便原始作者可以看到我的更正。 –

相关问题