У меня есть шаблон слова, который использует различные поля нижнего колонтитула в зависимости от раздела. Иногда пользователи этого шаблона портят нижние колонтитулы, и поэтому я пишу макрос для исправления нижних колонтитулов, возвращая поля нижнего колонтитула по умолчанию.
В полях нижнего колонтитула есть некоторая логика полей, основанная на разделе, и в основном мне нужно сделать следующее:
Перезагрузите номер страницы из раздела 5
Вставить текст в таблицу в нижнем колонтитуле в строке 1, столбце 2 на основе разделов, как указано ниже
Разделы с 1 по 4:
{PAGE} // Обратите внимание, что это в формате римских цифр, для нижнего колонтитула установлена опция «Другая первая страница»
Разделы 5 и далее
{if {page} <{= {pageref ReferencesEnd} + 1} "Страница {= {page}} из {= {pageref ReferencesEnd}" "{Styleref" Заголовок Att-приложения "\ n}" </p>
Мне удалось выполнить первый шаг и вставить поле для разделов с 1 по 4, однако я борюсь с тем, как программно вставить логику сложного поля для Раздела 5+ в соответствующие нижние колонтитулы в моем шаблоне, используя VBA?
Код, который мне нужен, комментируется в блоке кода ниже как:
ТРЕБУЕТСЯ КОД ЗДЕСЬ, ЧТОБЫ ВСТАВИТЬ СЛЕДУЮЩУЮ ПОЛЕВУЮ ЛОГИКУ В ФУТБОЛ
Sub FixPageNumbering()
Dim intSect As Integer
On Error Resume Next
'Insert footer code for Sections 1-4 into row1,col1 of 2x2 table
For intSect = 1 To 4
With ActiveDocument.Sections(intSect).Footers(wdHeaderFooterPrimary)
.PageNumbers.NumberStyle = wdPageNumberStyleLowercaseRoman
.Range.Tables(1).Rows(1).Cells(2).Select
Selection.TypeText Text:="Page "
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"PAGE ", PreserveFormatting:=True
End With
Next intSect
'Set page numbering to restart at #1 from Section 5
With ActiveDocument.Sections(5).Footers(wdHeaderFooterPrimary).PageNumbers
.RestartNumberingAtSection = True
.StartingNumber = 1
End With
'Insert footer code for Sections 5 and onwards into row1,col1 of 2x2 table
For intSect = 5 To ActiveDocument.Sections.Count
With ActiveDocument.Sections(intSect).Footers(wdHeaderFooterPrimary)
.PageNumbers.NumberStyle = wdPageNumberStyleArabic
.Range.Tables(1).Rows(1).Cells(2).Select
'NEED CODE HERE TO INSERT THE FOLLOWING FIELD LOGIC INTO FOOTER
'{ if { page } < { = { pageref ReferencesEnd } + 1 } "Page { = { page } } of { = { pageref ReferencesEnd }" "{Styleref "Att-Appendix Heading" \n }"
End With
Next intSect
ActiveWindow.View.Type = wdPrintView
End Sub
Для разделов 5 и далее в поле нижнего колонтитула должна отображаться страница # из &, или когда есть приложение (для страниц, существующих после закладки ReferencesEnd), оно будет отображать «приложение №»