Я пытаюсь написать код, который будет выделять все неосновные латинские символы в документе Word (например, все символы, не являющиеся буквенно-цифровыми, а также некоторые символы, такие как «.», «(», «)», «? ", "/", и т.д.)
Этот код работает, но занимает слишком много времени для того, чего я пытаюсь достичь. Он работает, выделяя весь документ, а затем удаляя выделение из «хороших» символов, найденных в массиве, оставляя выделенными неосновные латинские символы.
Sub HighlightNonStandardCharacters()
Application.ScreenUpdating = False
Dim MyRange As Range
Dim i As Long
Dim NormalCharacters
NormalCharacters = Array(" ", "!", Chr(34), "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", Chr(13), "¶")
' highlights all document text
ActiveDocument.Range.HighlightColorIndex = wdTurquoise
For i = 0 To UBound(NormalCharacters)
Set MyRange = ActiveDocument.Range
With MyRange.Find
.Text = NormalCharacters(i)
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
' removes highlighting from the “standard” characters leaving “non-standard” characters highlighted
MyRange.HighlightColorIndex = wdAuto
Loop
End With
Next
Application.ScreenUpdating = True
End Sub
Мне было интересно, есть ли более быстрый способ выделить все символы не в массиве или другой способ достижения цели.
Любые идеи были бы хорошы.
find
MS Word. Вы можете попробовать использоватьwildcard pattern
, чтобы указать, какие символы следует выделить (например,[!0-9a-zA-Z]
, чтобы выделить все, кроме цифр и букв). Для получения дополнительной информации перейдите по этой ссылке и выполните поиск в Google. - person Kazimierz Jawor   schedule 23.06.2015