Я пытаюсь написать макрос, который поможет мне исправить научные статьи после того, как я закончу их редактирование, найдя и выделив некоторые распространенные ошибки пунктуации и интервалов (например, двойные пробелы, неправильный интервал вокруг знаков препинания и т. д.). Я использую Word 2010.VBA - Использование .Find в MS Word при изменении дорожки на
Следующий код работает должным образом для документов Word, у которых нет изменений Track. В нем освещаются экземпляры строк, содержащихся в 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 период insterted и удаленная точка с запятой отображаются в виде (.;). Даже если я запустил макрос, находясь в режиме «Final» (не «Final: Show Markup»), метод .Find примет такие «удаленные» символы, которые все еще находятся в тексте. Это означает, что мой код не работает, потому что происходит следующий эффект (как показано на следующем рисунке).
Одним из возможных способов заключаются в открытии другого экземпляра слова, скопировать и вставить весь текст из файла (после выбора «Final», очевидно) и запустив макрос на новом экземпляре слова. Затем мне придется искать выделенные ошибки в новом экземпляре слова и вручную искать их (и исправлять их) с другой.
Есть ли способ, чтобы метод .Find выполнял поиск только по тексту, который появляется при просмотре документа в «Финальном» представлении и игнорирует текст, который был удален во время изменения треков?
Спасибо, однако, я должен отправить эти файлы без принятия изменений, чтобы исходный автор мог видеть мои исправления. –