In Microsoft Access 2007 and Microsoft Access 2010 when you attempt to programmatically print a form or report and use the Printer.Copies property to assign the number of copies, only one copy prints, even though you specified multiple copies.
Microsoft is aware of this problem in Microsoft Access 2007 and Microsoft Access 2010.
The following workarounds can resolve the issue:
Workaround 1: Use the PrintOut action of the DoCmd object For example, use the following code for the click event of a button on your form:
Private Sub <NameOfButton> Click()
DoCmd.OpenReport "<Name of report>", acViewPreview
DoCmd.SelectObject acReport, "<Name of report>", False
DoCmd.PrintOut , , , , <Number of copies>
DoCmd.Close acReport, "<Name of report>"
Workaround 2: Send the same report to the printer multiple times Paste the following in the click event of a button on your form:
Call PrintReportCopies("<reportName>", <# of copies>)
Add the following code to a module in the database:
Public Sub PrintReportCopies(strRptName As String, intNumCopies As Integer)
Dim i As Integer
For i = 1 to intNumCopies
For more information on working with printer settings for forms and reports refer to:
1. In a new blank database in Access 2007 or Access 2010 create a blank report, "rptTest". Add a label to the details section with the text "Test". 2. Create a new module and paste the following code in the module:
Public Sub PrintReport(sRepName As String, iCopies As Integer)DoCmd.OpenReport sRepName, acViewPreviewReports(sRepName).Printer.Copies = iCopiesDoCmd.Close acReport, sRepName, acSaveYesDoCmd.OpenReport sRepName, acViewNormalEnd Sub
3. Call the PrintReport procedure and provide the name of the report and the number of copies to print; for instance:
Call PrintReport "rptTest",2
Results: Only 1 copy prints
Print, Printer, Copies, Access 2007, Access 2010