Есть ли способ отформатировать номера глав Word 365 при нумерации страниц с помощью VBA?
У нас есть большие документы, в которых используется допустимая нумерация (1, 1.1, 1.1.1) для основного содержания и буквенные буквы для приложений (например, Приложение A, B, C и т. д.), и мы заново начинаем нумерацию для каждого приложения. Мы выделили для приложений отдельный стиль списка с буквенной нумерацией, так что все в порядке. Проблема в том, что когда номера страниц появляются в оглавлении и рисунках, люди, просматривающие печатные копии, не знают, на какую страницу 1 перейти, поэтому мы попытались добавить номера «глав» перед номерами страниц. Это был единственный способ отобразить их в TofC. Но номера глав, добавляемые Word, всегда форматируются как арабские цифры (1-1, 2-1 вместо A-1, B-1). (Диалоговое окно «Вставить номер страницы» в Word позволяет форматировать номер страницы, но по какой-то причине не номер главы.) Поэтому я надеюсь, что есть способ сделать это с помощью VBA.
В документации к объекту PageNumbers, похоже, указано, что это возможно, поскольку в ней говорится, что вам необходимо применить шаблон списка, прежде чем вы сможете включать номера глав. (Разве Word не будет использовать схему нумерации из шаблона?), но я не смог понять, как это сделать.
Я попробовал запустить пример кода (см. раздел Sub SetChapterPageNumbers ниже), но он не сработал. (Он отображал номер главы + 1, а не номер главы («Глава 1», стр. 1 отображается как «2-1»), и поскольку в стиле списка для главы использовались арабские цифры, он не сообщал мне, есть ли использовался формат нумерации списка. Кроме того, оказалось, что он устанавливает ListFormat для всего документа, и мы просто хотим применить его к приложениям. Когда я попытался применить ListFormat только для первого приложения, используя образец в качестве модель, все, что он сделал, это присвоил всему содержимому этого раздела стиль заголовка уровня 1 приложения:
Set wdDoc = ActiveDocument
wdDoc.Sections(5).Range.ListFormat.ApplyListTemplate ListTemplate:=wdDoc.Styles("Appendices").ListTemplate
Sub SetChapterPageNumbers()
'copied from Microsoft PageNumbers.HeadingLevelFormat example
'The first part of this example creates a new document, adds chapter titles and page breaks, and then formats the document by using the last numbered outline format listed in the Bullets and Numbering dialog box.
'The second part of the example adds centered page numbers - including the chapter number - to the header; an en dash separates the chapter number and the page number. The first heading level is used for the chapter number, and lowercase roman numerals are used for the page number.
Dim intLoop As Integer
Dim hdrTemp As HeaderFooter
Documents.Add
For intLoop = 1 To 5
With Selection
.TypeParagraph
.InsertBreak
End With
Next intLoop
ActiveDocument.Content.Style = wdStyleHeading1
ActiveDocument.Content.ListFormat.ApplyListTemplate _
ListTemplate:=ListGalleries(wdOutlineNumberGallery) _
.ListTemplates(7)
Set hdrTemp = ActiveDocument.Sections(1) _
.Headers(wdHeaderFooterPrimary)
With hdrTemp.PageNumbers
.Add PageNumberAlignment:=wdAlignPageNumberCenter
.NumberStyle = wdPageNumberStyleArabic
.IncludeChapterNumber = True
.HeadingLevelForChapter = 0
.ChapterPageSeparator = wdSeparatorEnDash
End With
End Sub
1 ответ
Благодаря Тимоти Райлатту, который посоветовал мне просмотреть статью Шоны Келли о встроенных стилях заголовков, у меня есть ответ на мой вопрос. По словам Шоны, вы должны использовать встроенные стили заголовков, если хотите включить нумерацию глав в оглавление, и при этом будет использоваться числовое форматирование, определенное для уровня заголовка. Я установил заголовок 8 и заголовок 9 как уровни приложения 1 и 2, и, создав TofC на основе стилей (заголовок 8 и 9) и установив для них уровни структуры 1 и 2 соответственно, они появились в оглавлении на соответствующих уровнях. . В номерах страниц использовалась буква главы (например, А-1).
Единственная проблема теперь состоит в том, чтобы они отображались в правильном положении на панели навигации и привязали остальные стили Приложения к нумерации стилей Заголовков, так как установка начального номера вставляет в текст лишние заголовки. Но это разные проблемы. (Как ни странно, мне удалось установить уровень структуры для заголовков 8 и 9 на уровни 1 и 2 в документе, исправив проблему с панелью навигации, но когда я попытался поместить это в шаблон, это не сработало: список style переопределил уровень структуры, вернув их на 8 и 9.) Но спасибо, Тимоти, за решение основной проблемы.