在Visual Basic中反复缺少Microsoft Office引用

时间:2017-08-04 20:13:46

标签: vba ms-access reference

我办公室的多人使用的Access数据库偶尔会快速连续闪烁几条错误消息,然后失去一些宏功能。它第一次发生时,我研究了这个主题并找到了一个解决方案 - 在Visual Basic中缺少必须修复的引用。在打开参考列表时,选择的4全部读取' MISSING:Microsoft X 16.0 Object Library'其中X是[Word,Powerpoint,Excel,Outlook]。我取消选择这些引用,向下滚动并选择15.0对象库引用。事情恢复正常,完整的宏功能恢复。

但是,引用仍然会恢复到仍然缺少的16.0对象库。有时我需要几个星期才能用旧版本替换丢失的引用,有时它会在第二天发生。它根本不是一个难以解决的问题,但它一直在发生,大多数其他用户都不知道该怎么做。

我必须想象问题是持续存在的,因为数据库是在同一办公室的多台计算机之间共享的,但我相信所有的PC都安装了相同版本的Microsoft Office。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尽管你相信,我怀疑有人有更新版本的Office,可能是Access 2016或Office 365订阅。我在我的办公室遇到了这个问题,但是我知道有些计算机在使用Office 2013时会有Access 2016。

出于多种原因,创建单独的前端数据库已经是最佳实践。它可能会消除或减少共享数据库的此类问题。共享后端数据库可以删除可能依赖于特定版本的所有代码模块和宏。然后可以将前端复制到每个客户端。只要将前端数据库从较小的版本(例如,引用最后一组设置为Office 15.0)分发(即复制)到每个客户端,任何较新版本的Access都将自动更新其本地副本的引用。 / p>

答案 1 :(得分:1)

是的,这是微软组件对象模型的一个非常烦人的功能。 (虽然它在20世纪90年代中期向我们揭示时非常尖端。)

实际的解决方案是将VBA切换为使用后期绑定而不是早期绑定。在这样做时,您可以完全删除显式引用,问题就会消失。

中途宿舍是使用后期绑定加载器插件,根据客户端配置,加载特定于其环境的插件。加载的插件可以使用早期绑定。

第二个选项可能更实用,因为它需要更少的代码更改。

相关问题