Приветствую всех читателей блога scriptcoding.ru. В данной статье мы рассмотрим коллекцию PageNumbers и объекты PageNumber, входящих в объектную модель Word, которые отвечают за нумерацию страниц в ворде.
При подготовке данного материала я столкнулся с некоторыми нестыковками… Так, в большинстве случаев у коллекции PageNumbers будет только один класс PageNumber, это и логично, так как нельзя сделать несколько «нумераций» страниц для одного раздела. Вторая нестыковка – если нумерация страниц в ворде для верхнего колонтитула начинается с заданного номера, то это автоматически влияет и на нумерацию для нижнего колонтитула. С одной стороны это понятно, какой смысл задавать различную нумерацию для верхнего и нижнего колонтитула, но, непонятно следующее…
Доступ к коллекции PageNumbers осуществляется через одноименное свойство объекта HeaderFooter, а тот в свою очередь, мы получаем через свойства Headers или Footers класса Section. Как видим, мы можем указать, для какого колонтитула (верхнего или нижнего) нужно задавать нумерацию в Word.
Коллекция PageNumbers – нумерация в Word
Свойства – нумерация страниц в Word
ChapterPageSeparator— Возвращает или устанавливает разделитель, используемый между номером главы и страницы. Значение константы WdSeparatorType:
- wdSeparatorColon — 2 — двоеточие.
- wdSeparatorEmDash — 3 — подчеркнутое тире.
- wdSeparatorEnDash — 4 — стандартное тире.
- wdSeparatorHyphen — 0 — дефис.
- wdSeparatorPeriod — 1 — период.
HeadingLevelForChapter— Возвращает или задает уровень заголовка (от 0 до 8), который применяется к названиям глав в документе.
IncludeChapterNumber– Значение true, если номер главы входит в номера страниц. Чтение и запись.
NumberStyle— Возвращает или задает значение константы WdPageNumberStyle, которая представляет собой стиль нумерации страниц в Word.
RestartNumberingAtSection– Если значение свойства установлено в true, то при вызове метода Add нумерация в ворде будет начинаться с числа 0. Если значение false – то нумерация будет начинаться с числа одни, а попытка переопределить начальный пункт нумерации ворд страницы с помощью свойства StartingNumber ничего не даст. Чтение и запись.
ShowFirstPageNumber– Значение true – происходит автоматическое добавление пункта для нумерации Word страницы в нижний колонтитул.
StartingNumber— Возвращает или устанавливает значение, которое определяет начало нумерации страниц в ворде. Указанный номер может быть виден или не виден на первой странице в зависимости от установок свойства ShowFirstPageNumber. Если свойство RestartNumberingAtSection установлено в false, то будет происходить переопределение свойства StartingNumber так, чтобы нумерация в Word продолжалась из предыдущего раздела
Application— Возвращает объект Application, представляющий приложение Microsoft Word.
Count— Возвращает число номеров страниц в коллекции. В большинстве случаев, колонтитулы содержат только один номер страницы, который является числом 1.
Методы – как сделать нумерацию в ворде
Add(PageNumberAlignment, FirstPage) — Возвращает класс PageNumber, представляющий номера, добавленные в верхний или нижний колонтитул раздела. Оба параметра являются дополнительными.
PageNumberAlignment – Определяет положение номера, значение константы WdPageNumberAlignment:
- wdAlignPageNumberLeft — 0 – По левому краю.
- wdAlignPageNumberCenter — 1 — По центру.
- wdAlignPageNumberRight — 2 – По правому краю.
- wdAlignPageNumberInside — 3 – По левому краю.
- wdAlignPageNumberOutside — 4 – По правому краю.
FirstPage – Если установлено значение false, то номер не добавляется к первой странице. Если этот аргумент опущен, параметры нумерации в ворде определяет свойство DifferentFirstPageHeaderFooter класса PageSetup.
Item(index) – Доступ к объекту PageNumber по его номеру в коллекции PageNumbers. Фактически, количество классов PageNumber ровно 1.
PageNumber – Нумерация в ворде
Свойства – нумерация страниц в ворде
Alignment— Возвращает или задает выравнивание для номера страницы. Значение константы WdPageNumberAlignment (смотрите выше).
Application— Возвращает объект Application, представляющий приложение Microsoft Word.
Index– Позиция элемента в коллекции. Только чтение.
Методы – как в ворде сделать нумерацию страниц
Copy() — Копирует заданный PageNumber в буфер обмена.
Cut()— Вырезает указанный PageNumber из документа и помещает его в буфер обмена.
Delete() — Удаляет указанный PageNumber. Фактически, мы отменяем нумерацию в Word для выбранного колонтитула
Select() – Выбор указанного PageNumber. После использования этого метода, следует использовать свойство Selection для работы с выбранным элементом.
Хорошо, с теоретической частью мы закончили, теперь можно приступить к программированию. Я приведу два примера кода на языке VBScript и JScript сервера сценариев Windows Script Host:
Пример программного кода на языке VBSCRIPT:
' ---------------------------------------------------------------------------- ' Коллекция PageNumbers и объекты PageNumber ' Нумерация в Word ' PageNumbers.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord, oDoc, i, MyText, oRange1, oRange2 Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() oDoc.Add() oWord.Visible = true Set oRange1 = oDoc(1).Range() Set oRange2 = oDoc(2).Range() MyText = "Нумерация в ворде. " ' Вставляем 6 страниц в первый документ For i=0 to 6 With oRange1 .InsertParagraph() .EndOf .InsertBreak() End With Next '------------------------------------------------------------------------------------------------------------------- ' Формируем нумерацию страниц в Word вместе с заголовками для первого документа '------------------------------------------------------------------------------------------------------------------- oDoc(1).Content.Style = -2 oDoc(1).Content.ListFormat.ApplyListTemplate oWord.ListGalleries(3).ListTemplates(7) With oDoc(1).Sections(1).Headers(1).PageNumbers .Add 1, true .NumberStyle = 1 .IncludeChapterNumber = True .HeadingLevelForChapter = 0 .ChapterPageSeparator = 4 End With '------------------------------------------------------------------------------------------------------------------- как сделать нумерацию в ворде ' Вставляем заданный текст во второй документ For i=0 to 40 With oRange2 .Text = MyText & MyText & MyText & MyText & MyText & MyText & MyText .EndOf .InsertParagraph() .EndOf End With Next '------------------------------------------------------------------------------------------------------------------- ' Формируем нумерацию страниц в ворде вместе с заголовками для первого документа '------------------------------------------------------------------------------------------------------------------- With oDoc(2).Sections(1).Headers(1).PageNumbers .ShowFirstPageNumber = true .RestartNumberingAtSection = true .NumberStyle = 57 .Add 0, true .StartingNumber = 5 End With |
Пример программного кода на языке JSCRIPT:
// ---------------------------------------------------------------------------- // Коллекция PageNumbers и объекты PageNumber // Нумерация в Word // PageNumbers.js // ---------------------------------------------------------------------------- var oWord1, oDoc1, i, MyText1, oRange1, oRange2; oWord1 = WScript.CreateObject("Word.Application"); oDoc1 = oWord1.Documents; oDoc1.Add(); oDoc1.Add(); oWord1.Visible = true; oRange1 = oDoc1(1).Range(); oRange2 = oDoc1(2).Range(); MyText1 = "Нумерация в ворде. "; // Вставляем 6 страниц в первый документ for (i=0; i<=6; i++){ with(oRange1){ InsertParagraph(); EndOf(); InsertBreak(); } } //------------------------------------------------------------------------------------------------------------------- // Формируем нумерацию страниц в Word вместе с заголовками для первого документа //------------------------------------------------------------------------------------------------------------------- oDoc1(1).Content.Style = -2; oDoc1(1).Content.ListFormat.ApplyListTemplate (oWord1.ListGalleries(3).ListTemplates(7)); with (oDoc1(1).Sections(1).Headers(1).PageNumbers){ Add(1, true); NumberStyle = 1; IncludeChapterNumber = true; HeadingLevelForChapter = 0; ChapterPageSeparator = 4; } //------------------------------------------------------------------------------------------------------------------- как сделать нумерацию в ворде // Вставляем заданный текст во второй документ for (i=0; i<=40; i++){ with(oRange2){ Text = MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1; EndOf(); InsertParagraph(); EndOf(); } } //------------------------------------------------------------------------------------------------------------------- // Формируем нумерацию страниц в ворде вместе с заголовками для первого документа //------------------------------------------------------------------------------------------------------------------- with (oDoc1(2).Sections(1).Headers(1).PageNumbers){ ShowFirstPageNumber = true; RestartNumberingAtSection = true; NumberStyle = 57; Add(0, true); StartingNumber = 5; } |
В данных примерах происходит создание двух документов, для каждого документа создается ссылка на класс Range (переменные oRange1 и oRange2). Это нужно для того, что бы мы смогли добавить текст или страницы в нужный документ. Далее происходит нумерация страниц в Word для первого и второго документа. В одном случаем мы связываем нумерацию страниц в ворд со стилями и списками (в документ будут добавлены заголовки, а номера страниц будут с ними связаны). В другом случаем мы просто задаем стиль нумерация Word для всех страниц и определяем, что нумерация ворд должна начинаться с цифры 5.