2017-08-04 531 views
4

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

但是,保持引用恢复到16.0对象库那些仍然下落不明。有时需要几个星期才能用旧版本替换缺失的参考文献,有时会在第二天发生。这根本不是一个困难的解决方案,但它一直在发生,其他大多数用户不知道该怎么做。

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

回答

2

尽管你相信什么,我怀疑有人Office的新版本,也许访问2016或Office 365订阅。我在我的办公室遇到此问题,但它预计,因为我知道,有几台计算机访问2016,而我使用的是Office 2013

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

+0

即使所有的办公电脑都具有相同的版本,也许有人正在使用具有不同版本的笔记本电脑/移动设备。 –

+0

我没有想过可能使用笔记本电脑,但很可能是这种情况。我将不得不问我们的IT部门。至于前端/后端的情况,我认为可以实施。我们有一个更大的数据库,这样操作,参考问题不会出现在那个数据库中。感谢您的建议。 – GunDelSol

1

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

一个实际的解决办法是切换VBA使用后期绑定而不是早期绑定。这样做可以完全放弃明确的引用,问题就会消失。

半路房子是用后期绑定装载机插件其中,根据不同的客户端配置,加载具体到他们的环境中的插件。该加载插件可以使用早期绑定。

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

+0

你能分享一个资源(链接)如何做到这一点?我熟悉特定对象的后期绑定,这一切都是我在网上找到的参考。有没有办法在VBE中为全局引用建立后期绑定,所以所有的VBA模块都不需要更新/调整?根据我的理解,一旦使用代码设置了VBE引用,它就会自动保存,并且在Access中再次打开数据库时也会持续存在,并导致相同的问题。 –

+0

我很欣赏这个建议。我会研究后期绑定,但这是我继承的数据库。它适用于它应该做的事情,但它背后的代码并不像我的CS类相信的那样有组织。我想我必须习惯现实世界中的情况......再次感谢。 – GunDelSol