#1
|
|||
|
|||
VBA/Macro for page numbering across multiple documents
Hi all, I need to apply continuous page numbering across multiple documents. I have over 200 documents (chapters) with different authors that work on individual chapters. I can merge the documents at the end and have continuous page numbering but when I separate the documents again, the continuous page numbering is lost.
The {INCLUDETEXT} field isn't practical for me for several reasons: 1) if one or several of the chapters change, then I have to go back and manually update them again, 2) I do this task every year, so the title of the documents will change every year. I found a macro (Automatic Page Numbers across Multiple Documents (Microsoft Word)) that seems like it would work, but it gives me an error and when I debug, this is the line that is problematic: "Application.Documents(thisFile).Close Savechanges:=wdSaveChanges" Does anyone know what would cause this issue? I'm a VBA novice, so this is beyond me. I've specified my own path name and the file names for the array. This is the whole code: Code:
Sub PageNumberReset() Dim pgNo As Long Dim n As Long Dim pathName As String Dim fileNames Dim thisFile As String Dim aRange As Range ' Specify the path to the document files pathName = "C:\MyDocs\Example" ' Create an array holding the document file names, in sequence fileNames = Array("Chap1.docx", "Chap2.docx", "Chap3.docx") pgNo = 0 For n = 0 To UBound(fileNames) thisFile = pathName & fileNames(n) Application.Documents.Open (thisFile) ActiveDocument.Sections(1).Headers(1).PageNumbers.StartingNumber = pgNo + 1 Set aRange = ActiveDocument.Range aRange.Collapse Direction:=wdCollapseEnd aRange.Select pgNo = Selection.Information(wdActiveEndAdjustedPageNumber) Application.Documents(thisFile).Close Savechanges:=wdSaveChanges Next n End Sub Can anyone help with this? Last edited by macropod; 05-12-2021 at 02:52 PM. Reason: Added code tags |
#2
|
||||
|
||||
I seems to me that maintaining a 'main' document with INCLUDETEXT fields pointing to each of the 'secondary' documents would be no more onerous than using a macro employing an array of document names that is just as susceptible as INCLUDETEXT fields to your chapters being renamed.
As for your macro, the path is missing the final separator. The code could also be improved in other ways: Code:
Sub PageNumberReset() Application.ScreenUpdating = False Dim pgNo As Long, n As Long Dim StrPath As String Dim ArrNames, wdDoc As Document ' Specify the path to the document files StrPath = "C:\MyDocs\Example\" ' Create an array holding the document file names, in sequence ArrNames = Array("Chap1.docx", "Chap2.docx", "Chap3.docx") For n = 0 To UBound(ArrNames) Set wdDoc = Documents.Open(FileName:=StrPath & ArrNames(n), AddToRecentFiles:=False) With wdDoc With .Sections.First For Each HdFt In .Headers With HdFt If .Exists = True Then .PageNumbers.RestartNumberingAtSection = True .PageNumbers.StartingNumber = pgNo + 1 End If End With Next For Each HdFt In .Footers With HdFt If .Exists = True Then .PageNumbers.RestartNumberingAtSection = True .PageNumbers.StartingNumber = pgNo + 1 End If End With Next End With pgNo = pgNo + .ComputeStatistics(wdStatisticPages) .Close Savechanges:=wdSaveChanges End With Next n Set wdDoc = Nothing Application.ScreenUpdating = True End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] Last edited by Charles Kenyon; 05-13-2021 at 08:53 AM. |
#3
|
|||
|
|||
I completely agree that entering each file name into the array is just as onerous. I was hoping to try the macro first to see if it works before trying to edit with some sort of file dialog instead of an array.
Thanks very much for the code! I tried it, and it seemed to have done something to the files because the "date modified" has updated. However, when I check the page numbers of the files, the first page of each document is still 1. I'm just using a { PAGE } code in the footers. Am I doing something wrong? |
#4
|
||||
|
||||
The code you posted - and which I adapted - refers to page numbering in headers, not footers.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
Ugh, how did I miss that?
I will try again. Thank you!! |
#6
|
|||
|
|||
I still can't get it to work. I created test documents with page numbers in the headers, and as before, the macro runs, and something happens to the files, but when I open the files, they all still start at 1.
|
#7
|
||||
|
||||
Depending on your documents' page layouts etc., it's possible the right headers/footers aren't being reset. I've extended the code to process all headers & footers in the target documents.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#8
|
|||
|
|||
AMAZING!! Thank you so much! It works beautifully. I truly appreciate it!
|
#9
|
|||
|
|||
For anyone else viewing this post, I ended up combining macropod's other macro from the post at https://www.msofficeforums.com/word-...ocx-files.html with this macro so that I don't have to manually type in the path and file names. It works like a charm.
Thanks again!! |
Tags |
macro, pagenumber, vba |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Page Numbering Macro | mbr50 | Word VBA | 4 | 01-20-2020 04:47 PM |
Multiple page numbering | Spyke44 | Word | 4 | 10-18-2015 08:18 AM |
Run a macro on multiple documents | prakhil | Word VBA | 1 | 06-27-2014 06:20 AM |
Multiple page document to individual multiple page documents | Legger | Mail Merge | 3 | 06-15-2014 06:36 AM |
page numbering across multiple documents | reitdesign | Word | 3 | 12-12-2008 11:55 AM |