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

时间:2010-06-10 18:24:37

标签: vba printing ms-office word-vba

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

提前致谢,        罗布

1 个答案:

答案 0 :(得分: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

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

Public e As clsEvents

Public Sub SetupEvents(theApp As Application)
    Set e = New clsEvents
    Set e.myApp = theApp
End Sub

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

Private Sub Document_Open()
    SetupEvents Me.Application
End Sub

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

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

希望有所帮助!