Printing Problems

How to Print Microsoft Access Reports with Separate Page Numbers

Tauseeq MagsiTauseeq Magsi Oct 23, 2026 869 views

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.

How to Print Microsoft Access Reports with Separate Page Numbers
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.
Before you start

Ensure you have your Access report correctly formatted and back up your database before adding or modifying any VBA code.

Solution 1Recommended

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.

1
Open the VBA Editor

Open your Access database and press ALT + F11 to launch the Visual Basic for Applications (VBA) editor.

2
Set Up Your Form

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.

3
Write the VBA Loop

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.

4
Apply the WhereCondition

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`.

5
Execute the Code

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.

Direct Printing: If you want the reports to be sent directly to your printer without opening the preview window first, change `acViewPreview` to `acViewNormal` in your VBA code.
Free Microsoft Office alternative

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. 1. Download and Install: Visit the official WPS Office website to download the free suite and install it on your computer.
  2. 2. Export and Open Your Data: Export your Access data to an Excel file (.xlsx) and open it directly in WPS Spreadsheet.
  3. 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.
100% free and lightweight office suiteHighly compatible with Microsoft Excel (.xlsx), Word (.docx), and PowerPoint (.pptx) formatsEasily manage lists, invoices, and reports with WPS SpreadsheetAdvanced print layout settings for custom page breaks and independent page numbering
microsoft office alternative - wps office

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.