Usa il metodo PrintOut...!
Chiaramente per farlo il Report deve essere APERTO.
Apri il report in modalità Preview(se non lo vuoi vedere Hidden) con OpenReport, poi usi PrintOut se vedi c'è il parametro con il numero di Copie, dopo il PrintOut DoEvents, quindi chiudi il Report(se era Hidden).
Non mettere altre operazioni nel mezzo, altrimenti devi accertarti che il Report in questione sia attivo, in quanto PRINTOUT stampa l'oggetto attivo...!
Io uso questa mia funzioncina... che è più completa e flessibile al posto di fare tante cose strane.
Public Function StampaRep(NomeReport As String, _
Optional ViewMode As AcView = acViewPreview, _
Optional WhereCond As String = vbNullString, _
Optional WinMode As AcWindowMode = acDialog, _
Optional Ncopie As Integer = 1)
If NomeReport = "" Then Exit Function
If Ncopie < 1 Then Exit Function
DoCmd.OpenReport NomeReport, ViewMode , , WhereCond, WinMode
DoCmd.SelectObject acReport, NomeReport, False
'Stampa il Numero di Copie del report passato
DoCmd.PrintOut , , , , Ncopie
DoEvents
DoCmd.Close acReport, NomeReport
End Function
Da usare così ad esempio per non vederlo:
Call StampaRep("NOME_REPORT", acViewPreview, "NomeCampo=" & Me!ID, acHidden, 5)