VBA - 启用“跟踪更改”时在MS Word中使用.Find

时间:2016-10-13 20:12:28

标签: vba ms-word macros

我正在尝试编写一个宏,它可以帮助我在完成编辑后校对科学论文,找到并突出显示一些常见的标点符号和间距错误(例如双倍空格,标点符号周围的错误间距等)。我正在使用Word 2010。

以下代码适用于尚未启用“跟踪更改”的Word文档。它以红色突出显示TargetList中包含的字符串的实例:

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

问题是我只需要在文档的FINAL视图中检查这样的错误。但是,当我使用此宏时,将删除“已删除”(如删除但尚未接受的更改)字符仍然存在于文档中。

Consider this example (ignore the yellow highlights).正如您在此图片中所看到的,我决定通过添加句点并删除分号来拆分原始句子。因此,在Final:Show Markup中,插入的句点和删除的分号似乎是(。;)。即使我在“最终”视图(而不是“最终:显示标记”)上运行宏,.Find方法也会将此类“已删除”字符保留在文本中。这意味着我的代码不起作用,因为会发生以下效果(如下图所示)。

Wrong Highlight

一种可能的解决方法是打开另一个单词实例,复制并粘贴文件中的所有文本(显然在选择“Final”之后)并在新的单词实例上运行宏。然后,我必须在新的单词实例上查找突出显示的错误,并在另一个上手动查找它们(并修复它们)。

有没有办法让.Find方法只搜索在“最终”视图中查看文档时出现的文本,并忽略在“跟踪更改”开启时删除的文本?

2 个答案:

答案 0 :(得分:0)

由于Word在接受更改之前将跟踪的更改视为文档的一部分,因此您可以在执行代码之前接受所有跟踪的更改:

Private Sub AcceptAllChanges() Dim stry As Object

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

End Sub

答案 1 :(得分:0)

不确定这是否可以解决您的问题。我觉得对我有用。 在您的代码开头:

    With ActiveWindow.View.RevisionsFilter
        .Markup = wdRevisionsMarkupNone
        .View = wdRevisionsViewFinal
    End With

然后,最后,您可以返回到您最初保存的选项,或强制使用更明智的选项,例如:

    With ActiveWindow.View
        .RevisionsFilter.Markup = wdRevisionsMarkupSimple
        .RevisionsFilter.View = wdRevisionsViewFinal
        .MarkupMode = wdMixedRevisions
    End With