VBA Duplex Printing in Excel 2010
In my previous post I have shown how to manually print duplex using Excel 2010.
Using VBA we can set the printer settings in duplex mode and print.
Microsoft engineers are kind enough to show some code on how we can achieve it.
The code sample on the links provided below is for Microsoft Word but it also works on Excel as well.
Here's the link: Set Duplex Printing via VBA
In the link above, there is an instruction on how to use the code.
Open Excel and click on Developer Tab. If Developer tab is not yet enable on your Excel.
The quick way to enter code is to right click on the name of the worksheet (like right click on "Sheet 1") and you will see "View Code".
Click on "View Code" and it will open up the Visual Basic editor.
The instruction on the Microsoft link above is to "Insert a Module".
Create or Insert a Module, then copy the code on the link above that starts with "Option Explicit
Public Type PRINTER_DEFAULTS up to the End Function".
The second code on the MS link, is not needed.
But the instruction on the link is needed, so create or insert a form and put a command button on the form.
I have tested this on a single worksheet with 4 pages and so far it works fine.
When I printed only 2 paper comes out with double sided print.
Double click on the command button to open up the code window.
Here's the code that will make use of the module inserted and set the printer to duplex mode.
That's it you already have a VBA that can do a duplex printing, provided of course that printer specified supports duplex printing.
Click VBA label below for more VBA tips..
Happy Coding!!! Cheers!!!
======================================
Free Android App with No Ads.
Excel Keyboard shortcuts guide
https://play.google.com/store/apps/details?id=chrisjoms.myexcelapplicationguide
Android Divine Mercy Chaplet Guide
https://play.google.com/store/apps/details?id=com.dmercyapp
Linux Android App cheat sheet:
https://play.google.com/store/apps/details?id=com.LinuxMobileKit
Heaven's Dew Fall
https://play.google.com/store/apps/details?id=soulrefresh.beautiful.prayer
Android Catholic Rosary App - Guide
https://play.google.com/store/apps/details?id=com.myrosaryapp&hl=en-GB
Educational App for Android Kids:
https://play.google.com/store/apps/details?id=com.letsmultiply
In my previous post I have shown how to manually print duplex using Excel 2010.
Using VBA we can set the printer settings in duplex mode and print.
Microsoft engineers are kind enough to show some code on how we can achieve it.
The code sample on the links provided below is for Microsoft Word but it also works on Excel as well.
Here's the link: Set Duplex Printing via VBA
In the link above, there is an instruction on how to use the code.
Open Excel and click on Developer Tab. If Developer tab is not yet enable on your Excel.
The quick way to enter code is to right click on the name of the worksheet (like right click on "Sheet 1") and you will see "View Code".
Click on "View Code" and it will open up the Visual Basic editor.
The instruction on the Microsoft link above is to "Insert a Module".
Create or Insert a Module, then copy the code on the link above that starts with "Option Explicit
Public Type PRINTER_DEFAULTS up to the End Function".
The second code on the MS link, is not needed.
But the instruction on the link is needed, so create or insert a form and put a command button on the form.
I have tested this on a single worksheet with 4 pages and so far it works fine.
When I printed only 2 paper comes out with double sided print.
Double click on the command button to open up the code window.
Here's the code that will make use of the module inserted and set the printer to duplex mode.
SetPrinterDuplex "FujiPrinter", 2 'Set the printer name to one word
ActiveSheet.PrintOut From:=1, To:=4 'Print 4 pages from the active sheet
MsgBox "Print Done" 'Just an informative message that printing has been done
That's it you already have a VBA that can do a duplex printing, provided of course that printer specified supports duplex printing.
Click VBA label below for more VBA tips..
Happy Coding!!! Cheers!!!
======================================
Free Android App with No Ads.
Excel Keyboard shortcuts guide
https://play.google.com/store/apps/details?id=chrisjoms.myexcelapplicationguide
Android Divine Mercy Chaplet Guide
https://play.google.com/store/apps/details?id=com.dmercyapp
Linux Android App cheat sheet:
https://play.google.com/store/apps/details?id=com.LinuxMobileKit
Heaven's Dew Fall
https://play.google.com/store/apps/details?id=soulrefresh.beautiful.prayer
Android Catholic Rosary App - Guide
https://play.google.com/store/apps/details?id=com.myrosaryapp&hl=en-GB
Educational App for Android Kids:
https://play.google.com/store/apps/details?id=com.letsmultiply
I have the Microsoft code controlling my printer driver the problem I have is that i can not control the "Print on both sides" button.
ReplyDeleteI will try to recover the excel file with the VBA code to print double sided, I will share it with you
ReplyDeleteHi Shane, i found the workbook but don't know how to share it with you. :)
ReplyDeleteHi, Christopher Siguan
ReplyDeleteCan u send it to ronyjohn@live.com.
Thanks
Rony
I tried this code. It appears to work with Word documents, but Excel seems to keep the values last set manually in the worksheet.
ReplyDeleteWhat do you mean Excel seems to keep the values last set manually? Do you mean that the printout of does not tally to the current values on your worksheet?
ReplyDeleteHave you tried to display the values (like msgbox variable_value) before printing out?
Because it could be that your desired output are not process.
Printing should get whatever current values in your worksheet.
No that is not what he means...
ReplyDeleteExcel does keep the printer settings (per WorkSheet), and saves the information in the document. It might even be you will send this information to customers or suppliers when you send the document by email....
Not funny.
See http://support.microsoft.com/kb/2526211
or http://support.microsoft.com/kb/829766 (contains a registry edit to fix this)