Статьи из блога
Как удалить лишние пробелы в тексте без использования диалогового окна “Найти и заменить”
Вопрос от Сергея:
Необходимо реализовать замену нескольких пробелов в тексте на один, при этом не использовать диалог "Найти и заменить" (даже программно), то есть реализовать надо макросом с простым перебором в цикле. Помогите, пожалуйста.
Сергей, вот пример такого макроса, предложенного Александром Витером:
1 2 3 4 5 6 7 8 9 10 | 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 |
Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:
Создание макроса из готового кода
Рубрика: Вопрос-Ответ, Макросы, Стили и форматирование
Метки: макросы | поиск и замена | форматирование
Просмотров: 24144
Подписаться на комментарии по RSS
Версия для печати
Метки: макросы | поиск и замена | форматирование
Просмотров: 24144
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Белый текст на синем фоне в Word 2007
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
- Быстрый ввод текста с помощью команды =rand()
Комментариев: 4
Очень хороший макрос! Спасибо!
Удобный макрос. Только у меня зависает на больших документах. Как его надо исправить, чтобы обрабатывалась только выделенная часть документа? Может тогда не будет зависать?
Вот так, но я бы использовал поиск и замену. По скорости — не сравнить.
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
А что делается строчкой DoEvents ? У меня второй макрос что-то не срабатывает.