If you still have the problem:
Open your report in design view, add the following to the Report's On Activate event:
Private Sub Report_Activate()
On Error Resume Next
DoCmd.RunCommand acCmdPrint
DoCmd.Close acReport, Me.Name
End Sub
Close and save the changes.
Now open the form where the cmdbutton is located to open the report. I'm assuming you are using DoCmd.OpenReport method to make your report print. Change that line to:
DoCmd.OpenReport "YourReportName", acViewPreview
(change "YourReportName" to the actual name of your report)
Don't worry about the acPreview argument causing the report to show on screen. The earlier code you placed in the report will keep this from happening.
When you click your button, the print dialog box will open so you can choose the printer options, the report will then print and close without becoming visible on screen.