Word 2007宏:是否有一个OnPrint事件我可以附加一个宏?

not*_*not 3 printing vba ms-office word-vba

我希望在将word文件发送到打印机之前对其进行格式化检查,并且它需要对用户完全透明(没有额外的控件,只需使用UI提供的标准打印选项).是否有OnPrint或BeforePrint事件,或者可以在这方面使用的东西,我可以附加一个宏,就像我可以使用Open,Close或Save一样?这感觉应该很简单......但这些都是着名的遗言.

罗伯,提前谢谢

Fin*_*ink 5

您可以设置包装类以启用Word的应用程序事件.

在您的文档中,您将需要创建一个类模块.此类模块将被称为"clsEvents".将此代码粘贴到新的类模块中:

Public WithEvents myApp As Word.Application

Public Sub myApp_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)

    'add your code here
    MsgBox "Blah"
End Sub
Run Code Online (Sandbox Code Playgroud)

接下来,创建一个标准模块.这将是将应用程序实例加载到您的类中的子程序.将此标准模块命名为"Events".然后粘贴此代码:

Public e As clsEvents

Public Sub SetupEvents(theApp As Application)
    Set e = New clsEvents
    Set e.myApp = theApp
End Sub
Run Code Online (Sandbox Code Playgroud)

最后,我们需要调用刚刚创建的子例程.最简单的方法是在"ThisDocument"模块的document_open事件中调用它.粘贴此代码:

Private Sub Document_Open()
    SetupEvents Me.Application
End Sub
Run Code Online (Sandbox Code Playgroud)

这还允许您使用通常在没有文档包装器的情况下隐藏的所有其他Word应用程序事件.

关闭应用程序,下次打开文档,用户尝试打印时,代码将执行.

希望有所帮助!