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

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

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

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

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

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
Вы можете помочь в развитии сайта, сделав пожертвование:

Или помочь сайту популярной криптовалютой:

 

BTC Адрес: 1Pi3a4c6sJPbfF2sSYR2noy61DMBkncSTQ

 

ETH Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

 

LTC Адрес: LUyT9HtGjtDyLDyEbLJZ8WZWGYUr537qbZ

 

DOGE Адрес: DENN2ncxBc6CcgY8SbcHGpAF87siBVq4tU

 

BAT Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

 

XRP Адрес: rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh Депозит Tag: 105314946

 

USDT (ERC-20) Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

 

Яндекс Деньги: 410013576807538

 

Вебмани (R ещё работает): R140551758553 или Z216149053852

 

А тут весь список наших разных крипто адресов, может какой добрый человек пожертвует немного монет или токенов - получит плюсик в карму от нас :) Благо Дарим, за любую помощь!

 

Еще записи по вопросам использования 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 ? У меня второй макрос что-то не срабатывает.

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

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

^ Наверх