Vba 保存之前的文档&;用户表单自动打开don';我们不能一起工作

Vba 保存之前的文档&;用户表单自动打开don';我们不能一起工作,vba,ms-word,userform,Vba,Ms Word,Userform,在这个文档中使用App_DocumentBeforeSave(在Class1中)和Document_New以及Call Register_Event_处理程序,我无法使用我常用的代码打开用户表单(Autoopen,AutoNew) 我应该如何放置代码以允许DocumentBeforeSave代码和Userform启动代码 对不起,我没说清楚。在保存前文档更改的工作代码模板中: 在Microsoft Word Project文档中: Private Sub Document_Open() Cal

在这个文档中使用App_DocumentBeforeSave(在Class1中)和Document_New以及Call Register_Event_处理程序,我无法使用我常用的代码打开用户表单(Autoopen,AutoNew)

我应该如何放置代码以允许DocumentBeforeSave代码和Userform启动代码

对不起,我没说清楚。在保存前文档更改的工作代码模板中: 在Microsoft Word Project文档中:

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
在类模块中,1类:

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的my templates在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的初始化代码一起使用–一方面,它们都使用子文档_New()。我尝试将Userform的开始代码更改为Sub AutoNew(),但仍然无法运行

没有DocumentBeforeSave代码的Userforms可以正常打开,没有Userform代码的DocumentBeforeSave代码可以正常工作。如何让两者在同一个项目中工作?顺便说一句-发生的错误:它不会保存项目/文档


谢谢。

自动打开、自动新建和自动保存属于“普通”模块。看起来您试图将它们放在一个类中,但这是行不通的…

现在还不清楚您实际上在做什么:添加代码(或至少添加代码的相关部分)通常有助于澄清问题。这并不能回答问题。要评论或要求作者澄清,请在其帖子下方留下评论。嗨,格伦。谢谢你的想法。是的,这就是问题的答案。在我找出真正的问题之前,我已经读了很多遍这个问题:自动宏没有启动。OP希望自动宏启动。如果他们在班级模块中,他们不会开火;答案必须在“普通”模块中,然后他们应该启动。好的,请注意,在答案中包含一个问题几乎会立即导致评论者和主持人将答案归类为对问题的评论。下次我会问一个问题作为评论,如果澄清有帮助,请提供一个答案来代替他们的反馈。Cindy-我不确定我是否理解你的建议:我的自动SUB都在这个文档中(用于BeforeSave代码和用户表单的初始打开。你是说它们不应该在这个文档中吗?什么是“普通”模块?简而言之,其他人是如何在同一项目中使用自动打开Userforms和BeforeSave代码的?ThnxThisDocument本身就是一个表示文档对象的类模块。在VBA编辑器中:Insert/module创建一个“普通”模块。将自动宏复制到该模块(并在类模块中删除或删除它们)。