【问题标题】:VBA reference changed version automaticallyVBA 参考自动更改版本
【发布时间】:2018-03-06 23:54:58
【问题描述】:

我在 Excel 2013 中编写了一些引用 Outlook 的 VBA,现在在虚拟机上使用。我的笔记本电脑上周升级到 Office 2016,我对这个工具进行了一些更改,然后它无法在 VM 上运行。

原来文件中的 VBA Outlook 引用已更改为 v16.0 (Office 2016),因此当 VM 尝试运行代码时(2013 年),它找不到此引用。

还有通用的 Office 参考,但仍保留为 v15.0。

我无法找到任何关于此的文档 - 这是标准行为吗?如果是,我有什么想法可以进一步更改此文件,而不会每次都弄乱参考?

【问题讨论】:

    标签: vba reference office-2016


    【解决方案1】:

    这是标准行为。

    您需要从早期绑定转到后期绑定。删除 VBE 中的 Outlook 引用,并在代码中将 Outlook 应用程序声明为Object

    Dim olApp As Object
    Set olApp = CreateObject("Outlook.Application")
    

    请记住,这样做会失去智能感知,并且可能必须将一些常量更改为它们的数值,例如olMailItem0

    确保您的模块顶部有Option Explicit,因为这会突出显示编译错误。

    【讨论】:

    • 我听说过“早期装订”和“后期装订”这两个术语,但从来不知道它与什么相关或费心查找它 - 谢谢!问题解决了,学到了新东西:-)