title | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|
PageNumber object (Word) |
word |
Word.PageNumber |
5b58f562-de19-ac9d-0b2c-7696603c1606 |
06/08/2017 |
medium |
PageNumber object (Word)
Represents a page number in a header or footer. The PageNumber object is a member of the PageNumbers collection. The PageNumbers collection includes all the page numbers in a single header or footer.
Remarks
Use PageNumbers (Index), where Index is the index number, to return a single PageNumber object. In most cases, a header or footer will contain only one page number, which is index number 1. The following example centers the first page number in the primary header in section one in the active document.
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary) _ .PageNumbers(1).Alignment = wdAlignPageNumberCenter
Use the Add method to add a page number (a PAGE field) to a header or footer. The following example adds a page number to the primary footer in the first section and in any subsequent sections. The page number doesn’t appear on the first page.
With ActiveDocument.Sections(1) .Footers(wdHeaderFooterPrimary).PageNumbers.Add _ PageNumberAlignment:=wdAlignPageNumberLeft, _ FirstPage:=False End With
See also
Word Object Model Reference
[!includeSupport and feedback]
I am looking for hours for one of the simplest things to do (but with MS things are never simple…): How can I programmatically add in my Word footer ‘Page #’, using VBA ?
There are zillions of different ways on the internet but none is working. Just a couple of examples
This code fails at Fields.Add:
Sub pageNumber()
ActiveDocument.Sections(ActiveDocument.Sections.Count) _
.Headers(wdHeaderFooterPrimary).Range.Select
With Selection
.Paragraphs(1).Alignment = wdAlignParagraphCenter
.TypeText Text:="Page "
.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"PAGE ", PreserveFormatting:=True
.TypeText Text:=" of "
.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"NUMPAGES ", PreserveFormatting:=True
End With
End Sub
This code doesn’t allow me to add a word like ‘page’ before:
With ActiveDocument.Sections(1)
.Footers(wdHeaderFooterPrimary).PageNumbers.Add _
PageNumberAlignment:=wdAlignPageNumberLeft, _
FirstPage:=True
End With
Any additional hint ?
Thanks.
- Remove From My Forums
-
Question
-
I would just like to add page numbers to the bottom right hand side of each page in a Word document that I created using Visual Basic.
I would like the page numbers to have the following format: «Page 1 of 5», «Page 2 of 5», etc.,
Does anyone know how to do this?
Thanks in advance,
Jim
James Hutchinson
Answers
-
>>>I would like the page numbers to have the following format: «Page 1 of 5», «Page 2 of 5», etc.,
Does anyone know how to do this?<<<
According to your description, I suggest that you could refer to below code:
Imports Word = Microsoft.Office.Interop.Word Module Module1 Sub Main() Dim wordApp As Word.Application wordApp = New Word.Application() wordApp.Visible = True wordApp.Documents.Open("D:\yourdocname.docx") wordApp.ActiveDocument.Sections(wordApp.ActiveDocument.Sections.Count) _ .Footers(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range.Select() With wordApp.Selection .Paragraphs(1).Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight .TypeText(Text:="Page ") .Fields.Add(Range:=wordApp.Selection.Range, Type:=Word.WdFieldType.wdFieldEmpty, Text:= _ "PAGE ", PreserveFormatting:=True) .TypeText(Text:=" of ") .Fields.Add(Range:=wordApp.Selection.Range, Type:=Word.WdFieldType.wdFieldEmpty, Text:= _ "NUMPAGES ", PreserveFormatting:=True) End With wordApp.ActiveDocument.Save() wordApp.Quit() wordApp = Nothing End Sub End Module
-
Marked as answer by
Wednesday, February 24, 2016 3:25 PM
-
Marked as answer by
PageNumbersPageNumber
Represents a page number in a header or footer. The PageNumber object is a member of the PageNumbers
collection. The PageNumbers collection includes all the page numbers in a single header or footer.
Using the PageNumber Object
Use PageNumbers(index), where index is the index number, to return a single PageNumber object. In most cases, a header or footer will contain only one page number, which is index number 1. The following example centers the first page number in the primary header in section one in the active document.
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary) _
.PageNumbers(1).Alignment = wdAlignPageNumberCenter
Use the Add
method to add a page number (a PAGE field) to a header or footer. The following example adds a page number to the primary footer in the first section and in any subsequent sections. The page number doesn’t appear on the first page.
With ActiveDocument.Sections(1)
.Footers(wdHeaderFooterPrimary).PageNumbers.Add _
PageNumberAlignment:=wdAlignPageNumberLeft, _
FirstPage:=False
End With
Приветствую всех читателей блога scriptcoding.ru. В данной статье мы рассмотрим коллекцию PageNumbers и объекты PageNumber, входящих в объектную модель Word, которые отвечают за нумерацию страниц в ворде.
При подготовке данного материала я столкнулся с некоторыми нестыковками… Так, в большинстве случаев у коллекции PageNumbers будет только один класс PageNumber, это и логично, так как нельзя сделать несколько «нумераций» страниц для одного раздела. Вторая нестыковка – если нумерация страниц в ворде для верхнего колонтитула начинается с заданного номера, то это автоматически влияет и на нумерацию для нижнего колонтитула. С одной стороны это понятно, какой смысл задавать различную нумерацию для верхнего и нижнего колонтитула, но, непонятно следующее…
Доступ к коллекции PageNumbers осуществляется через одноименное свойство объекта HeaderFooter, а тот в свою очередь, мы получаем через свойства Headers или Footers класса Section. Как видим, мы можем указать, для какого колонтитула (верхнего или нижнего) нужно задавать нумерацию в Word.
Содержание
- Коллекция PageNumbers – нумерация в Word
- Свойства – нумерация страниц в Word
- Методы – как сделать нумерацию в ворде
- PageNumber – Нумерация в ворде
- Свойства – нумерация страниц в ворде
- Методы – как в ворде сделать нумерацию страниц
Коллекция 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.
Word VBA, Get Current Page Number
Using the code below you can get the current page number the cursor is on:
Sub main()
Dim intCurrentLine As Integer
intCurrentLine = _
Selection.Range.Information(wdActiveEndPageNumber)
MsgBox (intCurrentLine)
End Sub
In the figure below the cursor is located at page 10:
Result after running the code:
See also:
- Word VBA, Get Current Line Number
- Word VBA, End of File
If you need assistance with your code, or you are looking for a VBA programmer to hire feel free to contact me. Also please visit my website www.software-solutions-online.com