Please Note: This article is written for users of the following Microsoft Word versions: 97, 2000, 2002, and 2003. If you are using a later version (Word 2007 or later), this tip may not work for you. For a version of this tip written specifically for later versions of Word, click here: Defining Default Printers on a Document Level.
by Allen Wyatt
(last updated May 10, 2017)
Some programs remember, on a document-by-document basis, what printer you last used when working with that document. For instance, InDesign and QuarkXPress remember what printer was used to print any given document; if you switch from one document to another, the printer designated to print that document will also change.
Word, unfortunately, does not have such a capability. Instead, Word keeps track of printers on a session-by-session basis. In other words, when you start Word, it starts by assuming you want to print to your default Windows printer. If you later change to a different printer, that printer remains selected until you specifically make changes. When you quit your Word session and restart later, the selected printer again reverts to the default printer.
There are several ways you could work around this shortcoming. One is to define different custom printer buttons (one for each of your printers) and then simply use those to print different documents, as desired. If you want Word to do the remembering of which printer was used, then your only option is to create a macro that would do this for you. This approach, however, is not a trivial one. For this reason, the balance of this tip will discuss only the generalities of writing such a macro instead of presenting the actual macro code.
A simple way to implement such a macro system would be to define a special custom document property, and then use the contents of that property to store the name of the printer last used for the document. The document property could be set using the AutoClose macro, which is called whenever you close a document.
Once the custom document property is set, a macro can read the value and reset the printer whenever you are ready to print. If the document property is not set or if it is set to a printer that is not available, then it could simply use the default Windows printer.
The trick in all this, of course, is to determine when the macro that does the printer switching should be executed. It could be placed in one of the Auto macros (such as AutoOpen), but that would not completely solve the problem. For instance, if you open two documents at the same time, the printer would remain set to the printer specified in the last document you opened.
A more useful solution may be to simply use macros to redefine the print command used within Word. When you chose to print your document, the macro would present the standard Print dialog box, but the selected printer would be changed to whatever printer is stored in the custom document property. The drawback to this approach is the same as the initial strength—that the printer isn't changed until actually printing. Word relies upon the selected printer driver to control its WYSIWYG display. In other words, the printer driver selected controls how information is displayed on the screen. If the printer driver changes just before printing, then what is printed may not match what is displayed on the screen.
The best solution would be to tie the printer-setting macro to an event that fired whenever a document attained focus (when the document was selected). Unfortunately, there is no such event available for document objects in VBA. (Which is very curious since there is such an object in Excel's implementation of VBA.)
The upshot of all this is that a complete solution will necessitate the changing of several different built-in Word commands. Which commands? It really depends on how you use Word. For instance, if you normally look at Print Preview before printing, then you will want to change the Print Preview command so that it changes the printer driver. Do you choose the Print command directly from the Print Preview screen? If so, then you will need to make changes to that command.
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (1551) applies to Microsoft Word 97, 2000, 2002, and 2003. You can find a version of this tip for the ribbon interface of Word (Word 2007 and later) here: Defining Default Printers on a Document Level.
Comprehensive VBA Guide Visual Basic for Applications (VBA) is the language used for writing macros in all Office programs. This complete guide shows both professionals and novices how to master VBA in order to customize the entire Office suite for their needs. Check out Mastering VBA for Office 2010 today!
Got a printer that understands PostScript? You can use some simple PostScript coding to turn text completely upside down ...Discover More
If you routinely need to print more than one copy of a document, you'll love the ideas presented in this tip. There's ...Discover More
You can save on paper on your printouts by instructing Word to print multiple pages on a single sheet of paper. In fact, ...Discover More
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Got a version of Word that uses the menu interface (Word 97, Word 2000, Word 2002, or Word 2003)? This site is for you! If you use a later version of Word, visit our WordTips site focusing on the ribbon interface.