更新Microsoft 2010 VBA对象库

时间:2018-07-12 17:00:54

标签: excel vba object ms-office

我在运行Microsoft Office 2016的工作计算机上创建了一个程序,但是,我的同事无法使用VBA程序,因为它没有更新的对象库。具体来说,日期和左功能会阻止程序运行。

如果他们运行的是Microsoft Office 2010版本,是否可以更新其对象库?

1 个答案:

答案 0 :(得分:1)

您不能使用使用较旧版本的较新版本库的引用,因为它可以提供较旧版本所不具备的功能,反之亦然(正常情况下,使用新库的旧版本会向后引用)兼容)。

如果一个引用损坏,则其他所有引用也不会加载。这就是VBA函数DateLeft失败的原因,因为未加载库。

要独立于Office版本,请使用Late-Binding,但即使如此,您也不能在旧版本上使用新功能(只需使用要支持或检查的最旧版本的子集即可)版本,如果该版本太旧,则会显示一条消息,说明此功能无法使用此Office版本)。

您可以开发Early-Bound,使其具有Intellisense和对象浏览器,并在分发之前切换到Late-Bound

  • 在VBA中删除参考->工具
  • 将类声明更改为Object
  • 使用CreateObject创建实例
  • 用自己的枚举,整数值或常量替换枚举

示例:

Dim OutlookInstance as Outlook.Application
Dim OlMailItem as Outlook.Mailitem

Set OutlookInstance = New Outlook.Application
Set OlMailItem = OutlookInstance.CreateItem(olMailItem)

更改为:

Dim OutlookInstance as Object
Dim OlMailItem as Object

Set OutlookInstance = CreateObject("Outlook.Application")
Set OlMailItem = OutlookInstance.CreateItem(0)

您可以从Codekabinet下载包含Outlook 2013枚举的模块(未经测试,但应涵盖Outlook 2016的大部分内容),然后导入到您的项目中或在您使用时获取值Early-Bound来自对象浏览器或仅来自Google。