有些程序会逐个文档地记住您在处理该文档时最后使用的打印机。例如,InDesign和QuarkXPress记住用于打印任何给定文档的打印机。如果从一个文档切换到另一个文档,则指定用于打印该文档的打印机也会更改。

不幸的是,Word没有这种能力。而是,Word逐会话跟踪打印机。换句话说,启动Word时,它首先假设您要打印到默认的Windows打印机。如果您以后更改为其他打印​​机,则在您明确进行更改之前,该打印机将保持选中状态。当您退出Word会话并稍后重新启动时,选定的打印机将再次还原为默认打印机。

您可以通过多种方法来解决此缺点。一种是定义不同的自定义打印机按钮(每个打印机一个)

然后根据需要简单地使用它们打印不同的文档。如果您希望Word记住所使用的打印机,那么您唯一的选择是创建一个宏来为您执行此操作。但是,这种方法并非微不足道。因此,本技巧的其余部分将仅讨论编写此类宏的一般性,而不是提供实际的宏代码。

实现这种宏系统的一种简单方法是定义一个特殊的自定义文档属性,然后使用该属性的内容存储最后用于该文档的打印机的名称。

可以使用AutoClose宏设置文档属性,该宏在您关闭文档时会被调用。

设置自定义文档属性后,只要准备好打印,宏就可以读取该值并重置打印机。如果未设置document属性或将其设置为不可用的打印机,则它可以简单地使用默认的Windows打印机。

当然,所有这些技巧都在于确定何时应该执行执行打印机切换的宏。可以将其放在Auto宏之一(例如AutoOpen)中,但这不能完全解决问题。例如,如果您同时打开两个文档,则打印机将保持设置为您打开的最后一个文档中指定的打印机。

一个更有用的解决方案可能是简单地使用宏重新定义Word中使用的打印命令。当您选择打印文档时,宏将显示标准的“打印”对话框,但是所选打印机将更改为自定义文档属性中存储的任何打印机。这种方法的缺点与初始强度相同,即打印机直到实际打印后才进行更改。

Word依靠所选的打印机驱动程序来控制其所见即所得的显示。换句话说,选择的打印机驱动程序控制信息在屏幕上的显示方式。如果在打印之前打印机驱动程序发生了变化,则打印的内容可能与屏幕上显示的内容不匹配。

最好的解决方案是将打印机设置宏与一个事件联系起来,该事件在文档获得焦点时(选择文档时)触发。不幸的是,VBA中没有可用于文档对象的事件。 (这很奇怪,因为Excel的VBA实现中有这样的对象。)

所有这些的结果是,一个完整的解决方案将需要更改几个不同的内置Word命令。哪些命令?这实际上取决于您如何使用Word。例如,如果您通常在打印之前先查看“打印预览”,那么您将需要更改“打印预览”命令,以便它更改打印机驱动程序。您是否直接从“打印预览”屏幕中选择“打印”命令?如果是这样,那么您将需要对该命令进行更改。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)此技巧(8226)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。您可以找到此技巧的一个版本Word的旧菜单界面在这里: