Я пытаюсь выделить слово, найденное RegEx, и если это право заменить его соответствующей заменой.Обозначая слово как «найти и заменить» в Microsoft Word с помощью RegEx
Код работает правильно, только если НЕ заменен.
Возможно, должен каждый раз перестраиваться ???
Sub Replace()
Dim regExp As Object
Set regExp = CreateObject("vbscript.regexp")
Dim arr As Variant
Dim arrzam As Variant
Dim i As Long
Dim choice As Integer
Dim Document As Word.Range
Set Document = ActiveDocument.Content
On Error Resume Next
'EGN
'IBAN
arr = VBA.Array("((EGN(:{0,1})){0,1})[0-9]{10}", _
"[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}")
arrzam = VBA.Array("[****]", _
"[IBAN]")
With regExp
For i = 0 To UBound(arr)
.Pattern = arr(i)
.Global = True
For Each Match In regExp.Execute(Document)
ActiveDocument.Range(Match.FirstIndex, Match.FirstIndex + Match.Length).Duplicate.Select
choice = MsgBox("Replace " & Chr(34) & Match.Value & Chr(34) & " with " & Chr(34) & arrzam(i) & Chr(34) & "?", _
vbYesNoCancel + vbDefaultButton1, "Replace")
If choice = vbYes Then
Document = .Replace(Document, arrzam(i))
ElseIf choice = vbCancel Then
Next
End If
Next
Next
End With
End Sub
«поэтому каждый последующий матч смотрит на старую позицию» - Да, это так. Вот почему я думал, что каждый раз нужно воспитывать. Но не обманывайте его –
«поэтому каждый последующий матч смотрит на старую позицию» - Да, это так. Вот почему я думал, что каждый раз нужно воспитывать. Но не обманывайся. «вы заменяете все случаи за один раз» - это не идея. Я хочу проверить слово перед заменой. Как Найти и заменить сделать на обычный документ. Это не проблема перекодировать все. Если у вас есть идея, я возьму его. –
Идея этого кода: «найти текст в документе с помощью шаблонов регулярных выражений, которые являются десятью из них, и поменять найденные слова один за другим с помощью вопроса« Да »,« Нет »,« Отмена ». Да - заменить в зависимости от шаблона, имеющего отношение к нему. - Перейдите к следующему найденному слову. Cancel - Exit search. " –