是否可以在Microsoft Office 2016中全局添加项目引用?

时间:2016-08-11 16:08:14

标签: ms-access vb6 dependencies ms-access-2016 vba6

我有一个旧的专有的Microsoft Access应用程序(.mdb),需要在Microsoft Office 2016的Windows 10上运行。

它的前端(.mde)需要一些旧的.ocx控件,我已将其缩小到需要库(link1link2),但我无法使用Tools->References添加任何内容;

数据库的管理员密码不是我拥有的。所以我想知道是否有办法将ocx控件全局添加到MS Access中,以便将它们添加到所有产品中。

尝试打开时,我收到错误:

  

表达式On Open,您输入了事件属性设置   产生了以下错误:Open Form操作已取消。

     

*表达式可能不会产生宏的名称,用户定义函数的名称或[事件过程]。   *评估函数,事件或宏时可能存在错误。

     

当事件因位置而无法运行时,会发生此错误   无法评估事件的逻辑。例如,如果   表单的OnOpen属性设置为=[Field],发生此错误   因为预期在事件时运行宏或事件名称   发生。

1 个答案:

答案 0 :(得分:0)

Access MDE是MDB的编译版本。 MDE文件中的VBA项目被编译为特定的位数并且无法更改,因此在32位Office下创建的MDE / ACCDE将无法在64位Office中运行,就像在64位Office中创建的MDE / ACCDE一样不适用于32位Office。

同样,对控件和某些类型库的引用可能需要在更改Windows版本后重新创建MDE,无论您是否从32位Office更改为64位Office

例如,Office 2016对早期版本的Office使用不同版本的VBA,因此如果VBA项目是在早期版本的VBA下编译的,则VBA项目将无法在Office 2016中运行。虽然此article与Office 2010有关,但它仍然提供了信息:

  

出现此问题是因为Access 2010 SP1使用较新版本的VBE7.dll文件(版本7.00.1619)

如果您使用的是64位Office,则MDE可能指向通用控制库(64位Office无法使用),但您的MDE可能也链接到键入仅适用于32位用法的库(例如,使用VB6构建的类型库)

为了彻底诊断此问题,您确实需要使用用于创建MDE的原始MDB。如果您需要从原始MDB重新创建MDE,但需要从有问题的MDE中挽救数据,您仍然可以使用Access中的工具从中导入数据。

如果您无法访问原始MDB,则可能需要找到具有正确版本的Windows和Office以及任何控件和库的PC,以便继续使用该文件。您可以通过支付http://www.everythingaccess.com/mdeconversion.asp(无关联)等第三方服务来挽救一些代码