Word page number vba

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

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.

Содержание

  1. Коллекция PageNumbers – нумерация в Word
  2. Свойства – нумерация страниц в Word
  3. Методы – как сделать нумерацию в ворде
  4. PageNumber – Нумерация в ворде
  5. Свойства – нумерация страниц в ворде
  6. Методы – как в ворде сделать нумерацию страниц

Коллекция 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.

Word VBA, Get Current Page Number

Aug 21, 2015 in VBA for Word

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:

Word VBA, Current Page Number

Result after running the code:

Word VBA, Current Page Number, Result

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

Like this post? Please share to your friends:
  • Word page number of total pages
  • Word page number from different page
  • Word page number footer
  • Word page layout for one page
  • Word page landscape one page portrait