Excel VBA如何指定Access数据库路径替代CurrentDb实现闭库运行查询
Excel VBA无前置打开Access执行更新查询的修改方案
你定位的问题原因正确:CurrentDb是Access VBA的内置方法,仅在Access程序运行、且目标数据库为当前激活数据库时才会返回对应数据库对象,Excel环境下调用必须主动建立和Access数据库文件的连接,无需提前打开Access程序。
修改后可直接运行的代码
Sub VisitorsUpdateOT() Dim dbs As DAO.Database Dim qdf As DAO.QueryDef Application.EnableCancelKey = xlDisabled Application.DisplayAlerts = False Application.ScreenUpdating = False ' 替换为你实际的Access数据库文件路径 Set dbs = DAO.OpenDatabase("C:\你的路径\你的数据库文件.accdb") 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 dbs.Close ' 新增:关闭数据库连接 Set dbs = Nothing Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
注意事项
- 请将代码中的Access文件路径替换为你实际的mdb/accdb文件存储路径
- 如果数据库设置了访问密码,将打开数据库的代码修改为
Set dbs = DAO.OpenDatabase("你的文件路径", False, False, "MS Access;PWD=你的数据库密码")即可 - 执行代码前请确认数据库没有被其他程序以独占方式锁定,否则会出现连接失败报错
- 若不想手动在VBA编辑器中引用DAO库,可以使用晚绑定写法,无需提前配置引用:
- 将变量声明修改为
Dim dbs As Object, qdf As Object - 将打开数据库的代码替换为
Set dbs = CreateObject("DAO.DBEngine.120").OpenDatabase("你的文件路径")
- 将变量声明修改为
内容的提问来源于stack exchange,提问作者Amal Kumar
相关产品推荐
相关产品推荐

