我在运行Microsoft Office 2016的工作计算机上创建了一个程序,但是,我的同事无法使用VBA程序,因为它没有更新的对象库。具体来说,日期和左功能会阻止程序运行。
如果他们运行的是Microsoft Office 2010版本,是否可以更新其对象库?
答案 0 :(得分:1)
您不能使用使用较旧版本的较新版本库的引用,因为它可以提供较旧版本所不具备的功能,反之亦然(正常情况下,使用新库的旧版本会向后引用)兼容)。
如果一个引用损坏,则其他所有引用也不会加载。这就是VBA
函数Date
和Left
失败的原因,因为未加载库。
要独立于Office
版本,请使用Late-Binding,但即使如此,您也不能在旧版本上使用新功能(只需使用要支持或检查的最旧版本的子集即可)版本,如果该版本太旧,则会显示一条消息,说明此功能无法使用此Office
版本)。
您可以开发Early-Bound
,使其具有Intellisense
和对象浏览器,并在分发之前切换到Late-Bound
。
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。