我有一个旧的专有的Microsoft Access应用程序(.mdb
),需要在Microsoft Office 2016的Windows 10上运行。
它的前端(.mde
)需要一些旧的.ocx
控件,我已将其缩小到需要库(link1,link2),但我无法使用Tools->References
添加任何内容;
数据库的管理员密码不是我拥有的。所以我想知道是否有办法将ocx控件全局添加到MS Access中,以便将它们添加到所有产品中。
尝试打开时,我收到错误:
表达式On Open,您输入了事件属性设置 产生了以下错误:Open Form操作已取消。
*表达式可能不会产生宏的名称,用户定义函数的名称或[事件过程]。 *评估函数,事件或宏时可能存在错误。
当事件因位置而无法运行时,会发生此错误 无法评估事件的逻辑。例如,如果 表单的OnOpen属性设置为
=[Field]
,发生此错误 因为预期在事件时运行宏或事件名称 发生。
答案 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(无关联)等第三方服务来挽救一些代码