在ThisDocument中使用App_DocumentBeforeSave(在Class1中)和Document_New与Call Register_Event_Handler,我无法使用我常用的代码打开Userform(Autoopen,AutoNew)。
如何放置代码以同时允许DocumentBeforeSave代码和Userform启动代码?
抱歉没有更清楚。在带有工作代码的模板中更改文档BeforeSave: 在Microsoft Word Project ThisDocument中:
Private Sub Document_Open()
Call Register_Event_Handler
End Sub
Private Sub Document_New()
Call Register_Event_Handler
End Sub
在模块中,模块1:
Dim X As New Class1
Public Sub Register_Event_Handler()
Set X.App = Word.Application
End Sub
在类模块中,Class1:
Public WithEvents App As Word.Application
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
‘
‘ Then follows my clean up code in this Sub, which also Calls Subs, which are also placed in Class1 under this Sub.
所有这些都按预期工作。但是,我为所有用于生成医学报告的模板编写了上面的代码,其中许多模板在打开时也会调出UserForms。但是,我的所有带有UserForms的模板都在Microsoft Word Project ThisDocument中使用此代码,以便在文档或模板打开时打开Userform:
Sub Autoopen()
Options.ButtonFieldClicks = 1
MACROS.Show
With MACROS
.Top = Application.Top
.LEFT = Application.LEFT
End With
End Sub
Private Sub Document_New()
Options.ButtonFieldClicks = 1
MACROS.Show
With MACROS
.Top = Application.Top
.LEFT = Application.LEFT
End With
End Sub
我无法使用Userform打开代码来处理DocumentBeforeSave的初始化代码 - 他们都使用Sub Document_New()。我尝试将Userform开启代码更改为Sub AutoNew(),但仍无法正常工作。
没有DocumentBeforeSave代码的Userforms打开正常,DocumentBeforeSave代码在没有Userform代码的情况下正常工作。如何让两者同时在同一个项目中工作? BTW - 发生的错误:它不会保存项目/文档。
谢谢。
答案 0 :(得分:1)
AutoOpen,AutoNew和AutoSave属于“普通香草”模块。看起来你已经尝试将它们放在一个类中,这将无法正常工作......