Статьи из блога

Статьи из блога

Как удалить лишние пробелы в тексте без использования диалогового окна “Найти и заменить”

Вопрос от Сергея:

Необходимо реализовать замену нескольких пробелов в тексте на один, при этом не использовать диалог "Найти и заменить" (даже программно), то есть реализовать надо макросом с простым перебором в цикле. Помогите, пожалуйста.

Сергей, вот пример такого макроса, предложенного Александром Витером:

Sub ReplaceMultiSpaces()
  Dim oChar As Range
  For Each oChar In ActiveDocument.Characters
    If oChar.Text = " " Then
      While oChar.Next(wdCharacter).Text = " "
        oChar.Next(wdCharacter).Delete
      Wend
    End If
  Next
End Sub

Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:

Создание макроса из готового кода

Автоматическая запись макроса

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 4

  1. Iwan Petrov
    10.08.2009 в 16:19 | #1

    Очень хороший макрос! Спасибо!

  2. Рома
    24.06.2010 в 11:06 | #2

    Удобный макрос. Только у меня зависает на больших документах. Как его надо исправить, чтобы обрабатывалась только выделенная часть документа? Может тогда не будет зависать?

  3. 24.06.2010 в 13:20 | #3

    Вот так, но я бы использовал поиск и замену. По скорости — не сравнить.

    Sub ReplaceMultiSpaces()
      Dim oChar As Range
      For Each oChar In Selection.Characters
        If oChar.Text = " " Then
          While oChar.Next(wdCharacter).Text = " "
            oChar.Next(wdCharacter).Delete
            DoEvents
          Wend
        End If
      Next
    End Sub

  4. Аноним
    23.04.2013 в 18:41 | #4

    А что делается строчкой DoEvents ? У меня второй макрос что-то не срабатывает.

Оставьте комментарий!

(обязательно)

^ Наверх