DocumentBeforeSave& UserForm autoopen不能一起工作

时间:2015-10-17 18:51:30

标签: vba ms-word word-vba userform

在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 - 发生的错误:它不会保存项目/文档。

谢谢。

1 个答案:

答案 0 :(得分:1)

AutoOpen,AutoNew和AutoSave属于“普通香草”模块。看起来你已经尝试将它们放在一个类中,这将无法正常工作......