Если я правильно понял, ваш документ содержит несколько глав, разделенных ручными разрывами страниц. Заголовки глав состоят из «главы» и одного другого слова, за которым следует пустой абзац.
В вашем вопросе вы ссылаетесь на "перенос строки (^ p)". Будьте осторожны, чтобы не перепутать строки с абзацами, так как они разные. ^ p на самом деле является меткой абзаца и вводится с помощью клавиши Enter
. В Word также есть разрывы строк, введенные с помощью Shift+Enter
, которые можно найти с помощью ^ l.
Если единственная цель разрыва страницы - убедиться, что заголовок главы находится на новой странице, то в этом нет необходимости. Ваш стиль заголовка главы может быть определен, чтобы иметь неявный разрыв страницы, установив «Разрыв страницы до».
Пустой абзац после заголовка главы также не нужен. Потребность в этом методе пробелов умерла с пишущей машинкой. Вместо этого установите «Интервал после» для стиля заголовка главы, чтобы обеспечить соответствующий объем пространства.
Встроенные стили Word, за исключением Normal, имеют имена, которые описывают их предполагаемое использование. Наиболее подходящий стиль для текста в теле документа - это основной текст.
Поскольку имена встроенных стилей Word изменяются в соответствии с языком приложения, при обращении к ним лучше всего использовать перечислитель WdBuiltinStyle. Существует значение для большинства стилей, хотя последние добавленные отсутствуют.
Приведенный ниже код выполняет все вышеперечисленное и использует поиск по шаблону, чтобы избежать добавления в документ ничего лишнего.
Sub FormatDocument()
With ActiveDocument.Range
'set base style for document
.Style = wdStyleBodyText
RemovePageBreaks
ModifyHeading1
' Find chapter headings and apply Heading 1
With .Find
.ClearFormatting
.Text = "Chapter <*>"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
Do While .Find.Found
With .Paragraphs.First
.Style = wdStyleHeading1
.Next.Style = wdStyleHeading2
End With
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
End Sub
Private Sub RemovePageBreaks()
With ActiveDocument.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^m"
.Replacement.Text = ""
.Execute Replace:=wdReplaceAll
'removing the page break leaves an empty para so remove all empty paragraphs
'this will also remove the unnecessary empty paragraph after the chapter heading
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^p^p"
.Replacement.Text = "^p"
.Execute Replace:=wdReplaceAll
End With
End Sub
Private Sub ModifyHeading1()
With ActiveDocument.Styles(wdStyleHeading1).ParagraphFormat
'add implicit page break
.PageBreakBefore = True
'add space after in points
.SpaceAfter = 12
End With
End Sub
Если вы хотите узнать больше о стилях в Word, посетите веб-сайт Шона Келли
Хотя многие содержащиеся в нем статьи довольно стары, вам также может пригодиться сайт Word MVP . Он также содержит ссылки на сайты отдельных MVP.