Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加VBA引用后保存模板_Vba_Ms Word - Fatal编程技术网

添加VBA引用后保存模板

添加VBA引用后保存模板,vba,ms-word,Vba,Ms Word,我有一些代码添加了使用Access所需的VBA引用。它会检查用户是否已经包含它们 这一切都很好。我的问题是,当我随后转到关闭word时,系统会提示我保存首字母缩写词工具模板,其中存储了此代码的宏。是否有可能通过编程实现这一点,以便在添加引用后,用户不会看到它发生时,就立即完成 我使用的代码是: If Not isReferenceLoaded("Access") Then MsgBox ("Access Object library not found, the script w

我有一些代码添加了使用Access所需的VBA引用。它会检查用户是否已经包含它们

这一切都很好。我的问题是,当我随后转到关闭word时,系统会提示我保存首字母缩写词工具模板,其中存储了此代码的宏。是否有可能通过编程实现这一点,以便在添加引用后,用户不会看到它发生时,就立即完成

我使用的代码是:

If Not isReferenceLoaded("Access") Then
        MsgBox ("Access Object library not found, the script will now attempt to find the library for you.")

        'Ensure access library is included so database actions can be done
        ID.AddFromFile "C:\Program Files (x86)\Microsoft Office\Office14\MSACC.OLB"

        MsgBox ("Access Object library added")

    End If

    If Not isReferenceLoaded("DAO") Then
        MsgBox ("DAO library not found, the script will now attempt to find the library for you.")

        'Ensure access library is included so database actions can be done
        ID.AddFromFile "C:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\ACEDAO.DLL"

        MsgBox ("DAO library added")
    End If
查看引用是否已加载的函数:

Private Function isReferenceLoaded(referenceName As String) As Boolean
    Dim xRef As Variant
    For Each xRef In ThisDocument.VBProject.References
        isReferenceLoaded = (xRef.Name = referenceName) Or isReferenceLoaded
    Next xRef
End Function
如果您不想使用更新的引用保存文档,那么下次打开文档时将重新生成这些引用,我想可以在您的文档对象中添加以下子例程,该对象应命名为ThisDocument:

Private Sub Document_Close()

        ThisDocument.Saved = True

End Sub
这将禁止仅对此文档进行保存检查。如果确实要保存,请在开头添加Call ThisDocument.Save语句。但是,我会指望用户保存他们的更改。。。但这是战略问题,请按你的意愿去做


注意事项:添加函数后不要忘记保存:如果忘记保存,您将丢失更改;Word将忽略您的更改,因为函数刚刚指示它这样做:-

我没有试图保存新的空白文档。我在word启动文件夹中保存了一个模板。因为公司中的大多数人都没有访问权限,所以我需要专门将VBA引用添加到访问对象中。我的代码做得很好。但是,当您关闭word时,它会要求将对模板的更改保存在启动文件夹以及打开的文档中。因此,如果您使用上述代码覆盖模板的文档关闭功能,它还会要求保存模板吗?真奇怪。。。您使用的Office版本是什么?问题是我想将更改保存到模板中,这样就不需要每次都加载vba access引用。我不明白的是,我如何使用常规保存选项来保存启动时加载的模板,而不是脚本编写过程中加载的模板。您可以像保存其他文档一样使用保存。假设您的模板项目名称是MyDot。假设里面的MS Word对象名为MyDoc,您可以在VBEditor的Project Explorer窗口中看到它们的真实名称。然后,要在修改后保存它们,只需调用MyDot.MyDoc.save.:D:D bingo,非常感谢,这正是我所需要的。我知道它必须使用常规的保存功能,但我自己无法让它工作。