Автор Тема: Word VBA Макросы: Удаление одинаковых значений.  (Прочитано 211 раз)

Оффлайн Rengame113

  • Посетитель форума
  • Сообщений: 65
Какой макрос можно сделать для данного случая?

Необходимо удалить _________________________.
_________________________ может быть как 1 так и очень много

Пример:
Привет Андрей
_________________________
Привет Антон
_________________________
_________________________
Привет Николай
_________________________

Должно получится
Привет Андрей
Привет Антон
Привет Николай

[вложение удалено администратором]

Оффлайн Администратор

  • Administrator
  • Сообщений: 1605
Макрос
Sub макрос()
    With ActiveDocument.Range.Find
        ' Что искать.
        .Text = "(^13)(_{1;}^13)"
        ' На что менять.
        .Replacement.Text = "\1"
        ' Галочка 'Подстановочные символы'.
        .MatchWildcards = True
        ' Замена.
        .Execute Replace:=wdReplaceAll
    End With
End Sub


Расшифровки подстановочных символов

.Text = "(^13)(_{1;}^13)"

Круглые скобки позволяют обращаться к фрагментам искомого выражения по порядковым номерам.
^13 - знак абзаца.
_{1;} - один или несколько символов "_".

.Replacement.Text = "\1"

\1 - подставить данные из первых круглых скобок. То есть в нашем случае подставить знак абзаца.
Если просто менять на "^13", то оформление текста съезжает, т.к. некоторое оформление находится в знаке абзаца. При использовании "\1" исходный знак абзаца остаётся. А если использовать "^13", то знак абзаца удаляется и вставляется новый знак абзаца.

Оффлайн Rengame113

  • Посетитель форума
  • Сообщений: 65
Спасибо, все работает.