首页 > 解决方案 > 在更改 VBA 代码之前不会触发 Word 中的 Document_open 宏(无关紧要)

问题描述

我有一个带有 Document_Open-sub 的 .docm 文件,它调用另一个 sub 来打开一个小用户窗体 - 或者它应该触发并打开 - 但它没有......

如果我对文档进行更改并保存它 - 它仍然不起作用。

如果我对同一文档中的 VBA 代码进行重大更改(例如在子外部添加空格字符)并保存它 - 它会突然起作用。

为什么它不能一直工作?- 我可以改变什么来使它工作?

附加信息(我不知道其中一些是否相关)

系统:Win10 - Word MSO365 build 2110

编辑 - 添加代码:

Public Sub Subrutine1()
    ThisDocument.CustomDocumentProperties("prop1").Value = " "      'resetting prop1
    UserForm1.Show  'prop1 is set from the userform
End Sub


Private Sub Document_Open()
    
    If ThisDocument.CustomDocumentProperties("prop1").Value = " " Then
        Call Subrutine1
    End If
End Sub

标签: vbams-word

解决方案


您可以将您的子“Subrutine1”重命名为“AutoOpen”。

我会推荐以下代码。

Private Sub AutoOpen()
    Dim myForm As UserForm1
    Set myForm = New UserForm1
    myForm.Show
    Unload myForm
    Set myForm = Nothing
End Sub
  • 我建议将文档属性重置为用户表单初始化的一部分,除非您有时在不重置的情况下使用它。
  • 我建议使用文档变量而不是文档属性。
  • 我怀疑使用文档模板而不是文档会更好。在这种情况下,宏将被命名为“AutoNew”。

推荐阅读