2

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

它的前端 ( .mde) 需要一些旧.ocx控件,我已将其缩小为需要库 ( link1link2 ),但我不能使用Tools->References它来添加任何东西;

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

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

您作为事件属性设置输入的“打开时”表达式产生了以下错误:“打开表单”操作已取消。

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

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

4

1 回答 1

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 使用的 VBA 版本与早期版本的 Office 不同,因此如果 VBA 项目在早期版本的 VBA 下编译,则无法在 Office 2016 中运行。尽管本文与 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(无从属关系)

于 2016-09-05T13:08:39.047 回答