Word VBA Макросы: Как удалить лишние пробелы?

Автор Game, 22 марта 2020, 07:16

Game

В Word файле есть текст и таблицы. Нужно убрать из документа все лишние пробелы, в т.ч. и в таблицах.

Пример

Было:
Иванов   Иван                    Иванович, 2000 г.р. Живет на  планете                    Земля

Стало: Иванов Иван Иванович, 2000 г.р. Живет на  планете Земля

Администратор

Макрос
Sub Макрос()

    With ActiveDocument.Range.Find
        .Text = " {2;}"
        .Replacement.Text = " "
        .MatchWildcards = True
        .Execute Replace:=wdReplaceAll
    End With

End Sub
[свернуть]

Game


fairyman

.Text = " {2;}"  - это регулярное выражение? VBA Word нормально понимает их? Как его понять? Нужно найти текст, в котором есть больше двух пробелов?
В Excel есть функция Trim, которая удаляет лишние пробелы. В Word такой функции нет?

Администратор

Да, в ворде можно использовать регулярные выражения.

{2;}
Перед левой фигурной скобкой находится пробел. Это означает, что нужно искать пробел.
Это {2;} означает: найти два и более символа, который находятся перед этим выражением. В данном случае: найти два и более пробела.

В ворде нет готового инструмента для удаления лишних пробелов: нужно изобретать. Например, можно использовать метод "Range.Find".