如何在文件夹而不是 Excel VBA 中的 CurrentDB 中定义访问数据库的路径?

Posted

技术标签:

【中文标题】如何在文件夹而不是 Excel VBA 中的 CurrentDB 中定义访问数据库的路径?【英文标题】:How to define a path of access database in a folder instead of CurrentDB in excel VBA? 【发布时间】:2021-11-11 10:38:01 【问题描述】:

我必须通过 excel vba 用户表单运行访问查询。这个查询基本上是从访问表中找到记录并更新 Out Time。表名是“Visitors”,查询名是“updateVisitors”。下面是我写的 Excel VBA 代码:-

Sub VisitorsUpdateOT()

Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Dim con As Object

    Application.EnableCancelKey = xlDisabled
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set dbs = CurrentDb
    Set qdf = dbs.QueryDefs("updateVisitors")

        qdf.Parameters("Recp_Visitors!OutTime").Value = Recp_Visitors.OutTime.Value
        qdf.Parameters("Recp_Visitors!SrNo").Value = Recp_Visitors.SrNo.Value
        qdf.Execute
        qdf.Close

    Set qdf = Nothing
    Set dbs = Nothing
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

End Sub

当 access 数据库打开时,此代码运行完美。我发现由于“Set dbs = CurrentDb”而打开数据库时它不起作用。即使数据库关闭,有什么方法可以运行此查询?

【问题讨论】:

您必须有一个打开的连接才能获取数据,但它不必是currentDb。要从 Excel 运行它,您需要以不同的方式获得该连接。 ***.com/a/60326389/8422953 【参考方案1】:

从这里https://sourcedaddy.com/ms-access/opening-external-database.html

改变

Set dbs = CurrentDb

Set dbs = DBEngine(0).OpenDatabase("C:\Temp\db1.accdb", False, False)

【讨论】:

Excel 不知道DBEngine 是什么。 它会抛出错误,说 MS Access DB 无法打开或写入文件“DB Path”。它已被其他用户独占打开。 您是否打开了 MS Access 文件?如果您一直在使用 VBA,它可能仍然在孤立进程中打开。 嗨尼克,你是对的。我将代码更改如下 Set dbs = DBEngine(0).OpenDatabase("DB Path", , False, True) 非常感谢大家... :) 随意接受正确的分析器

以上是关于如何在文件夹而不是 Excel VBA 中的 CurrentDB 中定义访问数据库的路径?的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA函数仅粘贴打印区域内的内容而不是整个工作表?

在 Excel 中使用 VBA 时将图片另存为图片而不是链接

如何仅在 VBA 逗号分隔列表中的字符串(而不是数字)上加上引号?

如何继续循环vba

需要帮助使用 VBA 在 excel 中将超链接插入到我计算机上的指定图片

如何使用 VBA 在 Excel 中正确添加表格列?