【问题标题】:MS Access through Excel VBA通过 Excel VBA 访问 MS
【发布时间】:2012-07-06 10:15:24
【问题描述】:

我遇到了一个众所周知的问题,但我找不到任何解决方案。我有一个使用 Excel 用 VBA 编写的旧应用程序(我不知道到底有多旧),它使用了一些 Access 数据 (*.mdb)。该应用程序是在 32 位系统上编写的。我尝试使用 Office 2010 将其更新到新的 64 位系统。

这是我用来加载 Access DB 的代码:
Set Db = DBEngine.OpenDatabase(.sChemin & .sNom, False, False, ";pwd=******")

我得到的错误是:
429 Activex Component Cant Create Object

这是我的参考资料:

  • Visual Basic 应用程序
  • Microsoft Excel 14.0 对象库
  • OLE 自动化
  • Microsoft Forms 2.0 对象库
  • Microsoft 脚本运行时
  • Microsoft 数据访问组件安装版本
  • Microsoft DAO 3.6 对象库

我已经尝试使用regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\DAO\dao360.dll" 取消注册/重新注册 DAO dll,当我尝试使用工作区时遇到了同样的问题。

我不知道它是否会有所帮助,但是当我使用 CreateObject("Access.Application") 并且我在两个不同的时间安装 Excel / Word 和 Access 时,Access 工作正常。

【问题讨论】:

  • office 2010 是 64 位的吗?还是只是操作系统?

标签: excel ms-access vba activex ms-access-2010


【解决方案1】:

尝试删除对Microsoft DAO 3.6 Object Library 的引用,它已经很旧了。添加对Microsoft Office 14.0 Access database engine Object Library的引用。

【讨论】:

  • 我试过了,但是我有很多未定义的类型,比如“Recordset”。我对 VBA 不是很熟悉,它会给我重写整个应用程序带来麻烦。但是我知道这个应用程序可以在我同事的计算机上运行,​​运行 Windows Xp 和相同的 Office 2010。我可以通过任何更改从中获取一些其他/较旧的库吗?
  • 查看您同事的参考资料。确保你有相同的参考。确保没有一个被标记为丢失。
  • 别介意,我已经开始用 .Net 和 mysql 重写整个东西。感谢您的帮助。
  • 谢谢,这对我有用。你能解释一下你是怎么知道是 DAO 3.6 导致了这个问题吗? IE。你怎么知道 DBEngine 是在 DAO 3.6 中定义的?又怎么知道“Microsoft Office 14.0 Access 数据库引擎对象库”有相同/相似的功能?
  • @dainichi 因为 OP 说他们正在使用 Access 2010。
猜你喜欢
  • 1970-01-01
  • 2022-07-17
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
相关资源
最近更新 更多