【问题标题】:Struggling to open access database from excel - error 91努力从 excel 打开访问数据库 - 错误 91
【发布时间】:2021-04-21 22:45:21
【问题描述】:

我正在努力从 excel 打开数据库。

我想检索一些信息并填充组合框。

我尝试将代码粘贴到标准模块中,然后在用户表单模块中运行。

我在用户窗体初始化时运行代码。 先上代码:

Dim dbe As DAO.DBEngine
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qry As String

On Error GoTo ERR_BBDD

'This is the line where the error is thrown.
Set db = dbe.OpenDatabase("E:\myDB.mdb")

我收到错误 91“变量或未定义块等等等等”。

我检查了 .mdb 文件路径是否正常。 代码非常简单,但我一定遗漏了一些东西并且找不到失败的原因,因为当我阅读所有文档和互联网时,我的代码应该可以正常工作。

【问题讨论】:

  • 你没有给dbe分配任何东西,也许是Set dbe = Application.DBEngine
  • @TimWilliams 哦!我修好了它。但是现在子表单似乎没有打开,excel卡住或冻结并且没有打开用户表单;(

标签: excel vba database ms-access


【解决方案1】:

您似乎正尝试像从 Access 应用程序实例内部一样打开 Access(用于 DAO),但您在 Excel 中。我认为 Excel 没有可供您调用的 DBEngine。您可以将 Access 作为一个新的 Access.Application 实例打开,然后执行您的操作,但它实际上会在后台打开一个 Access 实例,这对于一些查找来说效率并不高。

我建议创建一个 ADODB 连接,加载您的查找,然后关闭它。

Set objCnn = CreateObject("ADODB.Connection")
objCnn.Provider = "Microsoft.Jet.OLEDB.4.0"
objCnn.Open strDir & "\MyDatabase.mdb"
Set rst = CreateObject("ADODB.Recordset")
rst.Open strSQL, objCnn, adOpenStatic

Do Until rst.EOF

    ... do some lookup loading stuff here

    rst.MoveNext
Loop
rst.Close

希望有效!

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 2021-08-11
    • 2021-02-23
    • 1970-01-01
    • 2014-01-05
    • 2023-04-09
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多