View Single Post
 
Old 01-20-2020, 07:01 AM
mbr50 mbr50 is offline Mac OS X Office 2016 for Mac
Novice
 
Join Date: Jan 2020
Posts: 3
mbr50 is on a distinguished road
Default Page Numbering Macro

I have created a macro to number the pages of a book according to publishing convention:

- The preliminaries (section 1 of the file) is numbered by Roman numerals (i, ii, iii...x)
- Sections 2 to x are numbered by Arabic numerals (1,2,3...500)
- The first page of each section is unnumbered

The file is divided into 15 sections, and different rules applied to the footers for section 1, section 2 (which switches from Roman to Arabic numbers and has the first page unnumbered), and the remaining sections (where each first page must be unnumbered).

The trouble is that this code produces two {PAGE} fields in the footer to each section. Where is this field being created and how do I stop it?

Code:
Sub CreatePageRefs()

    Application.ScreenUpdating = False
    Dim rng As Word.Range, Sec As Word.Section, ft As Word.HeaderFooter
    
    Set Sec = ActiveDocument.Sections(1) 'The first section, in Roman (i, ii, iii)
    Set ft = Sec.Footers(wdHeaderFooterPrimary)
    Set rng = ft.Range
    With ft.PageNumbers
        .NumberStyle = wdPageNumberStyleLowercaseRoman
        .RestartNumberingAtSection = True
        .StartingNumber = 1
        .ShowFirstPageNumber = False
    End With
    rng.Style = wdStyleFooter
    rng.ParagraphFormat.Alignment = wdAlignParagraphCenter
    rng.Collapse wdCollapseEnd
    rng.Fields.Add Range:=rng, Type:=wdFieldPage
    
    Set Sec = ActiveDocument.Sections(2) 'The second section, 
                                                             'switch to Arabic numbering (1,2,3)
    Set ft = Sec.Footers(wdHeaderFooterPrimary)
    Set rng = ft.Range
    ft.LinkToPrevious = False
    With ft.PageNumbers
        .NumberStyle = wdPageNumberStyleArabic
        .RestartNumberingAtSection = True
        .StartingNumber = 1
        .ShowFirstPageNumber = False
    End With
    
    Dim numOfSections As Integer
    numOfSections = ActiveDocument.Sections.Count
    
    For i = 3 To numOfSections 'All remaining sections 
                                             ' -- restart so that first page number set to "False"
    Set Sec = ActiveDocument.Sections(i)
        Set ft = Sec.Footers(wdHeaderFooterPrimary)
       ft.LinkToPrevious = False
       Set rng = ft.Range
        With ft.PageNumbers
            .NumberStyle = wdPageNumberStyleArabic
            .RestartNumberingAtSection = False
            .StartingNumber = 1
            .ShowFirstPageNumber = False
        End With
    Next

End Sub
This code produces two center aligned fields {PAGE} and {PAGE \* MERGEFORMAT } in section 1. In the remaining sections, {PAGE} is right aligned, and {PAGE \* MERGEFORMAT } is centered. In all cases, I want just one, center-aligned {PAGE} field.
Reply With Quote