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: Specifying a Paper Tray in a Macro.

Specifying a Paper Tray in a Macro

Written by Allen Wyatt (last updated June 30, 2021)
This tip applies to Word 97, 2000, 2002, and 2003


If you use macros to print documents, you already know that the macro can specify the actual printer to which output should be sent. What if you want to also specify a specific paper tray to be used on that printer? Unfortunately, this gets to be a bit of a sticky wicket in Word. A brief tour and explanation will help to clarify why this is the case.

Which paper tray is used by Word depends on a number of factors, some of them not under the control of Word itself. For instance, consider the following, some of which are dependent on the version of Word you are using.

  • If you choose Tools | Options | Print, you can specify a Default Tray.
  • If you choose File | Page Setup | Paper Source, you can specify which paper tray to use for the first page and which to use for subsequent pages.
  • If you click Properties from within the Print dialog box (Ctrl+P), you can often (depending on your printer) rummage around and select a paper tray.

Thus, Word has two places where you can specify paper trays, and your printer may have its own place to set a paper tray to use. This final setting area (through the Properties button) is beyond the "reach" of VBA—the dialog box displays settings in the printer driver, not in Word itself.

To make matters worse, there is no clear-cut explanation available concerning which settings have precedence in any given print job. Do the settings in the Page Setup dialog box override the printer driver setting? Does the printer driver setting override the Options dialog box setting? How does the Options dialog box setting relate to the Page Setup settings? You get the idea; a multitude of settings, combined with the vagaries of different printer driver settings and printer capabilities can lead to confusion; what may work in one mix of conditions might not work in another.

That being said, there are several approaches you can try in order to control the paper tray selection via a macro. It is important to keep in mind that your macro can specify settings in the Options dialog box, as well as in the Page Setup dialog box. Your macro cannot, however, specify settings accessible through the Properties button of the Print dialog box. (More on this in a moment.)

If you want to set the Page Setup tray settings, you can do so using a macro similar to the following:

Sub CustomPageSetup()
    Dim strTrayFirst As String
    Dim strTrayOther As String
    Dim lngTrayFirst As Long
    Dim lngTrayOther As Long

    'Other setup code goes here

    strTrayFirst = System.PrivateProfileString(strIniFile, _
      "Printer Trays", "Letter First")
    If strTrayFirst <> "" Then
        Select Case strTrayFirst
            Case "Automatic Sheet Feed"
                lngTrayFirst = wdPrinterAutomaticSheetFeed
            Case "Default Bin"
                lngTrayFirst = wdPrinterDefaultBin
            Case "Large Capacity Bin"
                lngTrayFirst = wdPrinterLargeCapacityBin
            Case "Large Format Bin"
                lngTrayFirst = wdPrinterLargeFormatBin
            Case "Lower Bin"
                lngTrayFirst = wdPrinterLowerBin
            Case "Manual Feed"
                lngTrayFirst = wdPrinterManualFeed
            Case "Middle Bin"
                lngTrayFirst = wdPrinterMiddleBin
            Case "Upper Bin"
                lngTrayFirst = wdPrinterUpperBin
            Case Else
                lngTrayFirst = wdPrinterLowerBin
        End Select
    End If

    strTrayOther = System.PrivateProfileString(strIniFile, _
      "Printer Trays", "Letter Other")
    If strTrayOther <> "" Then
        Select Case strTrayOther
            Case "Automatic Sheet Feed"
                lngTrayOther = wdPrinterAutomaticSheetFeed
            Case "Default Bin"
                lngTrayFirst = wdPrinterDefaultBin
            Case "Large Capacity Bin"
                lngTrayOther = wdPrinterLargeCapacityBin
            Case "Large Format Bin"
                lngTrayOther = wdPrinterLargeFormatBin
            Case "Lower Bin"
                lngTrayOther = wdPrinterLowerBin
            Case "Manual Feed"
                lngTrayOther = wdPrinterManualFeed
            Case "Middle Bin"
                lngTrayOther = wdPrinterMiddleBin
            Case "Upper Bin"
                lngTrayOther = wdPrinterUpperBin
            Case Else
                lngTrayOther = wdPrinterUpperBin
        End Select
    End If
    With ActiveDocument.PageSetup
        .FirstPageTray = lngTrayFirst
        .OtherPagesTray = lngTrayOther
    End With
End Sub

This macro, despite its length, only sets two settings: the First Page setting and the Other Pages setting on the Paper Source tab of the Page Setup dialog box. The macro is also not complete, but only an example of how the actual "setting" could be done in your own macro. This particular code reads two settings from an INI file (the file name is specified in the strIniFile string), and then makes the settings based on the retrieved values. You would, obviously, need to supply the name of the INI file you wanted to use, as well as make sure that it was set up to contain the proper information in the proper format. (Setting up INI files is beyond the scope of this tip, but much information is available on the topic elsewhere.) Once the settings are read from the INI file, they are translated to settings that Word can understand, and then in the final With ... End With structure the dialog box changes are made.

For the reasons mentioned earlier, the approach exemplified in this macro might not work in all situations. If it doesn't, you may not be able to control the paper trays used by your printer, at least from a macro. Remember that the paper trays set through the Properties button are actually under the control of your printer driver, and the printer driver settings are not "visible" to VBA. A potential solution in this situation is to simply set up different printer drivers. Follow these general steps:

  1. Determine how many paper trays you want to use on the printer.
  2. Define a new printer in Windows for each paper tray you want to use. For instance, if you want to use three different paper trays, you would define three printers, each with a name representative of a paper tray.
  3. Right-click on a printer definition and change the properties of the printer so it prints to the desired paper tray.
  4. Repeat step 3 for each of the other printer definitions, making sure you specify different paper trays for each one.

At this point you have multiple printer definitions set up, and each will print to a different paper tray on the same printer. You can now specify the desired printer, in a macro, so that the printout goes to the desired paper tray. The only drawback to this solution, of course, is that it takes quite a bit of setup work. If you work in an office with 50 users, this means you will need to make sure all 50 have each printer defined as described above.

Remember that the paper tray to be used by Word can be specified by the user through the selection of one or more settings in various dialog boxes, as detailed at the first of this tip. Because of this, some people have had success using the SendKeys statement to emulate the keypresses a user would use to specify a paper tray. (You can find information on SendKeys in the VBA online help available with Word.)

What SendKeys actually does is to stuff the keyboard buffer with a series of keypresses, just as they would be typed by the user. There is a potential problem with SendKeys, however. It can be unreliable because there is no way to insure that the keystrokes are actually going where you want. On a multi-threaded operating system (like Windows), some other process could intervene and derail the commands.

The bottom line is that, unfortunately, there is no "one size fits all" solution to selecting a paper tray using a macro. A solution that works for one person may not work for another. For this reason, you will need to experiment to see what solution will work best for you—but don't expect it to work for everyone else.

Note:

If you would like to know how to use the macros described on this page (or on any other page on the WordTips sites), I've prepared a special page that includes helpful information. Click here to open that special page in a new browser tab.

WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (1697) 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: Specifying a Paper Tray in a Macro.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Continuous Formatting for Footnotes

If you've got a lot of short footnotes in a document, you might be looking for a way to save space by "crunching up" the ...

Discover More

AutoFill Won't Work as Expected

AutoFill is a great tool for filling cells with data. What do you do when it doesn't work like you expect, however? ...

Discover More

Using a Single Digit for a Year

Excel works very well with dates and times. One thing you cannot do, however, is to create a custom format that displays ...

Discover More

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!

More WordTips (menu)

Printing Copy Numbers

Copy 1, Copy 2, Copy 3... Do you want to mark your printouts so that they are numbered? Here's how you can do it.

Discover More

Remembering Copies to Print

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

Using Sequential Document Serial Numbers

Need to add a unique serial number to each printed copy of your document? Here's a quick way to print such numbered versions.

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] (all 7 characters, in the sequence shown) in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is two more than 7?

There are currently no comments for this tip. (Be the first to leave your comment—just use the simple form above!)


This Site

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.

Videos
Subscribe

FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.