旧版本的参考 Office 对象库...缺少 mso.dll
Reference Office Object Library for older versions...missing mso.dll
我在 Access 2016 中进行开发。我使用 VBA 创建了一个自定义快捷菜单(右键单击菜单)。为了使此 VBA 代码成为 运行,我必须启用 Microsoft Office 16.0 对象库引用。
每当我将此数据库部署到装有旧版 Access(2013 和 2010)的 PC 时,数据库都会查找不存在的 Microsoft Office 16.0 对象库。我希望 Access 足够智能,可以自动 select 为安装的 Microsoft 版本提供适当的对象库。但是,在我手动设置适当的对象库之前,它不会并且代码不会 运行。
是否有更好的自动化方法?是否有一些我可以实现的 VBA 代码可以找到正确的库?我想出的唯一解决方案是在将数据库部署到其他 PC 之前在旧版本的 Access 中设置对象库(找到更新的对象库似乎没有问题,只有旧的。)
谢谢大家。
您似乎已经提前将依赖项绑定到 16.0 类型库;早期绑定引用始终特定于版本,您只能早期绑定到一个特定版本。
因为您需要支持多个版本,所以您需要将所有内容切换到后期绑定。
你没有提供任何代码,所以我给你一个假设的例子 - 而不是这个:
Dim foo As Library.SomeType
Set foo = New Library.SomeType
foo.DoSomething(Library.SomeEnumValue)
您需要执行此操作(并从您的项目中删除早期绑定引用):
Const SomeEnumValue As Long = 42 'Library.SomeEnumValue
Dim foo As Object
Set foo = CreateObject("Library.SomeType")
foo.DoSomething(SomeEnumValue)
据我所知,没有自动执行此操作的方法,但是您可能需要关注 Rubberduck issue #1184,它专门为此制作了一个重构工具(完全披露:我管理那个开源项目)。
我在 Access 2016 中进行开发。我使用 VBA 创建了一个自定义快捷菜单(右键单击菜单)。为了使此 VBA 代码成为 运行,我必须启用 Microsoft Office 16.0 对象库引用。
每当我将此数据库部署到装有旧版 Access(2013 和 2010)的 PC 时,数据库都会查找不存在的 Microsoft Office 16.0 对象库。我希望 Access 足够智能,可以自动 select 为安装的 Microsoft 版本提供适当的对象库。但是,在我手动设置适当的对象库之前,它不会并且代码不会 运行。
是否有更好的自动化方法?是否有一些我可以实现的 VBA 代码可以找到正确的库?我想出的唯一解决方案是在将数据库部署到其他 PC 之前在旧版本的 Access 中设置对象库(找到更新的对象库似乎没有问题,只有旧的。)
谢谢大家。
您似乎已经提前将依赖项绑定到 16.0 类型库;早期绑定引用始终特定于版本,您只能早期绑定到一个特定版本。
因为您需要支持多个版本,所以您需要将所有内容切换到后期绑定。
你没有提供任何代码,所以我给你一个假设的例子 - 而不是这个:
Dim foo As Library.SomeType
Set foo = New Library.SomeType
foo.DoSomething(Library.SomeEnumValue)
您需要执行此操作(并从您的项目中删除早期绑定引用):
Const SomeEnumValue As Long = 42 'Library.SomeEnumValue
Dim foo As Object
Set foo = CreateObject("Library.SomeType")
foo.DoSomething(SomeEnumValue)
据我所知,没有自动执行此操作的方法,但是您可能需要关注 Rubberduck issue #1184,它专门为此制作了一个重构工具(完全披露:我管理那个开源项目)。