如何在文件夹而不是 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 逗号分隔列表中的字符串(而不是数字)上加上引号?