Статьи из блога
Удаление пустых абзацев
Дмитрий спрашивает:
Использую макрос, удаляющий ненужный междустрочный интервал. Но применяется он ко всему тексту в документе, а как сделать так, чтобы изменения вносились только в выделенном фрагменте, а без выделения — во всем документе?
В этом случае вы можете воспользоваться следующим макросом:
Sub delPilcrows()
'Удаление пустых абзацев только в выделенном фрагменте или во всем документе
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[^13]{1;}" 'искомый знак абзаца (один или больше)
.Replacement.Text = "^p" 'заменяем на один знак абзаца
.Format = False
.Forward = True
If Selection.Type = wdSelectionIP Then
.Wrap = wdFindContinue
Else
.Wrap = wdFindStop
End If
.Execute Replace:=wdReplaceAll
End With
Selection.Collapse direction:=wdCollapseStart 'снимаем выделение
End Sub
Рубрика: Макросы, Вопрос-Ответ
Метки: макросы
Просмотров: 162444
Подписаться на комментарии по RSS
Версия для печати
Метки: макросы
Просмотров: 162444
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вертикальное выравнивание текста
- Возможно ли запретить копирование текста из документа Word?
- Вопрос о работе с графиками (диаграммами) в Word
- Вопросы и ответы о гиперссылках в редакторе Word

Форум
Читают
Обсуждают
страницы
сайты
статистика
Комментариев: 3
Небольшое уточнение. По-моему, лучше так:
.Text = "^0013{2;}" 'искомый знак абзаца (один или больше) .Replacement.Text = "^p" 'заменяем на один знак абзаца .MatchWildcards = TrueПопытался воспользоваться этим макросом -ничего не получилось. Надо писать самому.
Все, что требуется: удалять пустые строки в тексте.
Жаль зрение и бумагу...
Спасибо.
Алекс
Пытаюсь вернуться к проблеме. Требуется удалить пустые строки в тексте (больше двух подряд) - иногда срабатывает правильно, иногда нет. Кто-нибудь найдет ошибку??? ( разделитель - запятая!)
Sub delVoidParagraphs()
'
' delVoidParagraphs Macro
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^13{2,}"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub