1

Тема: Как удалить пустые абзацы в начале документа?

ситуация следующая:
есть документы, в которых вначале существуют рамки с текстом
у меня есть такой макрос
sub test()
dim frm as frame
for each frm in activedocument.frames
frm.range.select
frm.range.delete
selection.delete
next frm

в этом же макросе дальше идет команда на выполнение нужного мне форматирования и потом
end sub
суть в том, что после удаления всех рамок остаются несколько пустых абзацев перед началом текста, мне нужно чтобы мне нужно чтобы в макросе было удаление этих пустых абзацев, а я не знаю как! нужно еще чтобы он удалял пустые абзацы только перед текстом, так как в самом тексте между некоторыми абзацами существуют пустые абзацы: например, заголовок документа разделен между основным текстом двумя абзацами!!! заранее спасибо!

2

Re: Как удалить пустые абзацы в начале документа?

макрос мне не подходит
Sub delPar()
Dim sPar As String
Dim par As Paragraph
Dim i As Integer
i = 0
For Each par In ActiveDocument.Paragraphs
If Right(par, 2) = Chr(46) & Chr(13) Then
i = i + 1
Else
If Right(par, 1) = Chr(13) Then
par.Range.Text = Replace(par.Range.Text, Chr(13), " ")
End If
End If
Next par
End Sub

3

Re: Как удалить пустые абзацы в начале документа?

1. Вообще-то в грамотно составленном документе не должно быть пустых абзацев как таковых.
2. Заголовки определяются отдельными стилями, в свойствах которых определяются отступы абзаца сверху и снизу в соотношении: 2/3 сверху и 1/3 снизу по отношению к размеру шрифта заголовка. Также заголовок должен отличаться от основного текста как форматом шрифта, так и общим форматом абзаца, что сделает Ваш документ удобочитаемым для предназначенной ему аудитории. Вообще выделение какого-то абзаца пустыми абзацами не только не правильно, но и несет лишнюю информационную нагрузку.
3. Сам макрос для удаления пустых абзацев прост до состояния амебы, Вы его и сами можете сделать без труда используя средство записи макроса Word. И правильное задание параметров Поиска и Замены с использованием Подстановочных знаков. Вот этот макрос созданный самим Word:

Sub Удалить_пустые_абзацы()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "[^0013]{2;}"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

4

Re: Как удалить пустые абзацы в начале документа?

aap77 пишет:

1. Вообще-то в грамотно составленном документе не должно быть пустых абзацев как таковых.
2. Заголовки определяются отдельными стилями, в свойствах которых определяются отступы абзаца сверху и снизу в соотношении: 2/3 сверху и 1/3 снизу по отношению к размеру шрифта заголовка. Также заголовок должен отличаться от основного текста как форматом шрифта, так и общим форматом абзаца, что сделает Ваш документ удобочитаемым для предназначенной ему аудитории. Вообще выделение какого-то абзаца пустыми абзацами не только не правильно, но и несет лишнюю информационную нагрузку.
3. Сам макрос для удаления пустых абзацев прост до состояния амебы, Вы его и сами можете сделать без труда используя средство записи макроса Word. И правильное задание параметров Поиска и Замены с использованием Подстановочных знаков. Вот этот макрос созданный самим Word:

Sub Удалить_пустые_абзацы()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "[^0013]{2;}"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

как средствами ворда найти заменить я знаю, но это не подходит, выполнение этого макроса удаляет все пустые абзацы + один (перед самим текстом удаляет), а как я уже сказал выше, мне нужно, чтобы он удалял все абзацы только непосредственно перед началом текста, так как в тексте документа есть заголовок, который разделяется двумя абзацами!!! мне нужно чтобы макрос как только начинался текст останавливал выполнение! как-то так!

5

Re: Как удалить пустые абзацы в начале документа?

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

'    Перемещение в начало документа
    Selection.HomeKey wdStory
'    Удаление абзацев, состоящих из одного символа
    While Selection.Paragraphs.First.Range.Characters.Count = 1
        Selection.Paragraphs.First.Range.Delete
    Wend
Лучше день потерять — потом за пять минут долететь!