Print to a specific Printer using VBA

justanotheruser

Board Regular
Joined
Aug 14, 2010
Messages
96
Hi all,

I'm using this code to print a sheet using VBA to a specific printer, called Lexmark E350d:

<CODE>Sub MyPrint()
Dim sCurrentPrinter As String
Const MyPrinter As String = "Lexmark E350d"
sCurrentPrinter = ActivePrinter
ActivePrinter = MyPrinter
ActiveSheet.PrintOut '<can change to specific sheet
ActivePrinter = sCurrentPrinter
End Sub</CODE>

Upon executing the code, I get Run-time error '1004': Method 'ActivePrinter' of object '_Global' failed - what does this error mean, debugging highlights the code highlighted in blue above. Thanks in advance! :)
 
Last edited:

Excel Facts

Shade all formula cells
To shade all formula cells: Home, Find & Select, Formulas to select all formulas. Then apply a light fill color.
Hi - thanks for your fast response!

Code:
Sub PrinttoLexmark()
'
' PrinttoLexmark Macro
' this is a macro used to print to Lexmark e350d printer.
'

    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

This printer is not set as the default printer either, so I selected it but it doesn't seem to add the printer name? Thanks again.
 
Upvote 0
Try like this

Code:
Sub MyPrint()
Dim sCurrentPrinter As String
Const MyPrinter As String = "Lexmark E350d"
sCurrentPrinter = Application.ActivePrinter
Application.ActivePrinter = MyPrinter
ActiveSheet.PrintOut '
Application.ActivePrinter = sCurrentPrinter
End Sub
 
Upvote 0
Try printing to the Lexmark then run this - it should give you the correct string to use

Code:
Sub test()
MsgBox Application.ActivePrinter
End Sub
 
Upvote 0
Guys-
I'm just starting to learn VBA on my own. I wanted you to know this thread helped me out with what I was trying to accomplish. Thank you. Here's how I understand this. Is this correct?

Sub MyPrint()


'I don't know what this does
Dim sCurrentPrinter As String


'Converts the actual printer name to an easy name. In this case "MyPrinter"
Const MyPrinter As String = "HP0EC7A7 (HP Photosmart 6510 series) on Ne01:"


'I'm guessing this tells the system that the active printer before the macro is run is actually named sCurrentPrinter
sCurrentPrinter = Application.ActivePrinter


'This makes the active printer, MyPrinter
Application.ActivePrinter = MyPrinter


'This prints out the active sheet.
ActiveSheet.PrintOut '


'This switches the program back to whatever the active printer was before you ran the macro
Application.ActivePrinter = sCurrentPrinter


End Sub
 
Upvote 0

Forum statistics

Threads
1,223,239
Messages
6,170,947
Members
452,368
Latest member
jayp2104

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top