Коллекция Word PageNumbers и объекты PageNumber — нумерация страниц в ворде

Коллекция Word PageNumbers и объекты PageNumber — нумерация страниц в ворде Объектная модель Microsoft Word

Приветствую всех читателей блога 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.

Методы – как сделать нумерацию в ворде

делаем нумерацию в word

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– Позиция элемента в коллекции. Только чтение.

Методы – как в ворде сделать нумерацию страниц

нумерация в word страниц

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.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий