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

Удаление пустых абзацев

Дмитрий спрашивает:

Использую макрос, удаляющий ненужный междустрочный интервал. Но применяется он ко всему тексту в документе, а как сделать так, чтобы изменения вносились только в выделенном фрагменте, а без выделения — во всем документе?

В этом случае вы можете воспользоваться следующим макросом:

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
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:

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

  1. 19.07.2010 в 14:18 | #1

    Небольшое уточнение. По-моему, лучше так:

    .Text = "^0013{2;}"   'искомый знак абзаца (один или больше)
    .Replacement.Text = "^p"   'заменяем на один знак абзаца
    .MatchWildcards = True

  2. Аноним
    30.12.2012 в 21:17 | #2

    Попытался воспользоваться этим макросом -ничего не получилось. Надо писать самому.

    Все, что требуется: удалять пустые строки в тексте.

    Жаль зрение и бумагу...

    Спасибо.

    Алекс

  3. Аноним
    29.04.2013 в 00:33 | #3

    Пытаюсь вернуться к проблеме. Требуется удалить пустые строки в тексте (больше двух подряд) - иногда срабатывает правильно, иногда нет. Кто-нибудь найдет ошибку??? ( разделитель - запятая!)

    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

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

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

^ Наверх