How to Print Microsoft Access Reports with Separate Page Numbers
Question details
The user needs to print multiple records from a database as separate reports so that each report has its own independent page numbering sequence.

- Product
- Microsoft Access
- Device & OS
- not provided
- Scenario
- Printing multiple inspection reports or invoices in a single batch, where each document must start at page 1.
- Observed behavior
- Access treats the entire batch of records as a single continuous report, causing the page numbers to increment across different records instead of resetting for each one.
Ensure you have your Access report correctly formatted and back up your database before adding or modifying any VBA code.
Use a VBA Loop with a WhereCondition
By using a VBA script to loop through selected records, you can instruct Access to open and print each report individually, forcing the page numbering to reset for each report instance.
Microsoft Access does not have a native toggle to reset page numbers per record within a continuous report. To bypass this, you must isolate each record into its own print job.
A common method is to use a form with a multi-select list box. A VBA loop iterates through your selected items and uses the DoCmd.OpenReport method to generate a separate report for each.
Open your Access database and press ALT + F11 to launch the Visual Basic for Applications (VBA) editor.
Create or open a form that contains the records you want to print, such as a multi-select list box where users can highlight specific invoices or inspection reports.
Add a command button to your form and open its On Click event. Write a VBA loop that iterates through the `ItemsSelected` collection of your list box.
Inside the loop, retrieve the unique identifier for each selected record (e.g., `InspectionID`). Use the following syntax to open the report: `DoCmd.OpenReport "rptInvoiceMultiple", acViewPreview, , "InspectionID=" & inspectionID`.
Save your code and return to Form View. Select your records and click the button. Because each report is generated independently, the page numbers will correctly start at 1 for each record.
Manage and Print Your Data Easily with WPS Office
While Microsoft Access is powerful for complex databases, many list-tracking, invoice generation, and reporting tasks can be managed far more easily using a spreadsheet. WPS Office provides a lightweight, free alternative to Microsoft Office, featuring robust spreadsheet tools and flexible page layout settings for flawless printing.
- 1. Download and Install: Visit the official WPS Office website to download the free suite and install it on your computer.
- 2. Export and Open Your Data: Export your Access data to an Excel file (.xlsx) and open it directly in WPS Spreadsheet.
- 3. Customize Print Settings: Use the Page Layout tab in WPS Spreadsheet to set specific print areas, insert page breaks, and customize headers and footers for your reports.

Frequently Asked Questions
Can I reset page numbers in Access without using VBA?
No, Microsoft Access does not offer a built-in property or macro action to reset the `[Page]` variable per record in a single continuous report. Isolating each record into its own report instance via VBA is the standard solution.
What is the syntax for the WhereCondition in DoCmd.OpenReport?
The WhereCondition is a string expression that acts like a SQL WHERE clause, but without the word 'WHERE'. For example, `"CustomerID=" & Me.CustomerID` filters the report to match the customer ID currently selected on your form.
Why does Access group all my records into one print job?
When you bind a report to a table or query containing multiple records, Access processes it as a single continuous document. Consequently, the built-in `[Page]` and `[Pages]` variables calculate the sequence across the entire dataset.
How can I select multiple records to print at once in Access?
You can create a form with a list box control and set its Multi Select property to 'Simple' or 'Extended'. Using VBA, you can then loop through the `ItemsSelected` collection of the list box and execute the print command for each highlighted item.




