birstein
asked on
VBA code to Print Report to Default Printer
Dear All:
I have a funky problem on a network whereby reports, although set to print to "Default Printer", are printing on other printers other than the user's default.
Therefore I would like to add VBA code to each Report's Open event that tells the report to print to the default printer, even though this is already setup in the "Page Setup".
Does anybody know how to do this?
I have a funky problem on a network whereby reports, although set to print to "Default Printer", are printing on other printers other than the user's default.
Therefore I would like to add VBA code to each Report's Open event that tells the report to print to the default printer, even though this is already setup in the "Page Setup".
Does anybody know how to do this?
Application.Printer = Nothing
that will reset the printer to the default printer for the local machine.
I think only Access 2003 allows you easily to change printers. You can use Excel to do it for you though (works for all versions from 97+)
In your refrences, Add Microsoft Excel Object Library ?.? (8.0 for 97, 9.0 for 2000, 10.0 for xp and 11.0 for 2003)
heres the code to do it
Dim xl As Excel.Application
Set xl = New Excel.Application
xl.ActivePrinter = "myPrinterName"
xl.Quit
Set xl = Nothing
Dave
In your refrences, Add Microsoft Excel Object Library ?.? (8.0 for 97, 9.0 for 2000, 10.0 for xp and 11.0 for 2003)
heres the code to do it
Dim xl As Excel.Application
Set xl = New Excel.Application
xl.ActivePrinter = "myPrinterName"
xl.Quit
Set xl = Nothing
Dave
It seems that there is an aspect of your code that is changing the printer anyway, because it should default to this.
I know that Access 2002 uses the Printers collection. It may be the first version to do so.
Maybe it is 2002, not too sure, im stuck in the dark ages at work with 97
It is - the Printers collection is not available in 2000 (as far as I know).
Reports can "remember" the printer settings but NameAutocorrect can play havoc with these settings.
Reports can "remember" the printer settings but NameAutocorrect can play havoc with these settings.
ASKER
Access 2002 does use the Printers collection.
But I need to clarify that all of the reports open in Preview mode.
What I want to do is FORCE the reports to print to the user's default printer WHEN the user prints, even if the Page Setup has been set to "Specific Printer" by someone.
I tried to use the Reports UseDefaultPrinter property:
If Reports![VacationNotificat ionLetter] .UseDefaul tPrinter = False Then
Reports![VacationNotificat ionLetter] .UseDefaul tPrinter = True
End If
the report says "Automation Error".
But I need to clarify that all of the reports open in Preview mode.
What I want to do is FORCE the reports to print to the user's default printer WHEN the user prints, even if the Page Setup has been set to "Specific Printer" by someone.
I tried to use the Reports UseDefaultPrinter property:
If Reports![VacationNotificat
Reports![VacationNotificat
End If
the report says "Automation Error".
The problem you're having is that you can't change it from the report's internal code.
what you need to do is write an external procedure for opening the report in print preview and use that code to change the printer.
Public Sub PreRptWthDefPrt()
Dim rpt As Report
Application.Printer = Nothing
DoCmd.OpenReport "NameOfReport", acViewPreview
Set rpt = Reports("NameOfReport")
rpt.Printer = Application.Printer
End Sub
Dim rpt As Report
Application.Printer = Nothing
DoCmd.OpenReport "NameOfReport", acViewPreview
Set rpt = Reports("NameOfReport")
rpt.Printer = Application.Printer
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Dear MCorrente:
Your code works! However, I have one problem. I have two landscape reports and when I use your code its sets the printer to the default print in portrait mode, which, of course, is the default printer setting. Can I use your code AND modify it for just these two reports, so the report is set to landscape?
Thanks!
Kathryn
Your code works! However, I have one problem. I have two landscape reports and when I use your code its sets the printer to the default print in portrait mode, which, of course, is the default printer setting. Can I use your code AND modify it for just these two reports, so the report is set to landscape?
Thanks!
Kathryn
Yep. Just put the following line after the last line of the code above:
rpt.Printer.Orientation = acPRORLandscape
rpt.Printer.Orientation = acPRORLandscape
See the article, you can get the answer
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k2/html/ODC_acc10_Printers.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k2/html/ODC_acc10_Printers.asp