如何捕捉在 Word 2016后台视图的“文件”菜单/选项卡中选择的“打印”选项?

问题描述

下面的代码打开了我想检测正在打开的屏幕:

Sub test()
  Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
End Sub

它似乎没有激活我可以为其创建事件处理程序的 CommandBarButton 对象。关于如何在不更改文件选项卡结构的情况下执行此操作的任何想法,因为这仅与一个文档相关。目标是能够在打印文档之前设置双面打印,同时仍然可以使用标准的 File->Print 选项。

解决方法

你可以去老派。在有事件捕获之前,通过创建一个同名的例程来拦截命令是很常见的。

例如:

Public Sub PrintPreviewAndPrint()
   MsgBox "Hello!"
End Sub

或者,您可以捕获 DocumentBeforePrint 事件,尽管这只会在对话框执行后触发。

,

无法重新调整后台 UI 控件的用途,但您可以改为创建自己的 UI。因此,更好的解决方案是考虑隐藏内置 UI 并使用自定义命令完全重建它。 Introduction to the Office 2010 Backstage View for Developers 文章介绍了构建自定义后台 UI 的基础知识。

Application.DocumentBeforePrint 事件允许取消默认操作,因此您可以使用 PrintOut 方法以您想要的方式以编程方式打印文档。

Public WithEvents appWord as Word.Application 
 
Private Sub appWord_DocumentBeforePrint _ 
 (ByVal Doc As Document,_ 
 Cancel As Boolean) 
 
 Dim intResponse As Integer 
 
 intResponse = MsgBox("Have you checked the " _ 
 & "printer for letterhead?",_ 
 vbYesNo) 
 
 If intResponse = vbNo Then Cancel = True 
End Sub