访问运行时错误 2501 - OpenQuery 操作已取消



试图拼凑一个由以前的员工编写的旧数据库,但是在excel中运行宏以链接回访问数据库时,我收到运行时错误2501,代码如下有人有任何想法吗?

Public Sub Auto_Open()
If ActiveWorkbook.ReadOnly Then Exit Sub
Set accApp = CreateObject("Access.Application")
accApp.Visible = False
accApp.OpenCurrentDatabase ("i:database reportingmain.mdb")
accApp.DoCmd.OpenQuery "blp_varience_estimate2"
accApp.Quit
Sheets("Estimate Raw").Select
Range("A1").Select
Cells.Select
Selection.QueryTable.Refresh BackgroundQuery:=False
End Sub

谢谢

DoCmd.OpenQuery打开查询以供查看,并在操作查询上显示警告框。你看到的错误是指警告框上的取消操作,该操作可能不会显示为 Access 本身未显示,因此会自动取消。

从 VBA 运行查询的正确方法是通过 QueryDefs 集合:CurrentDb.QueryDefs("MyQuery").Execute

将代码编辑为以下内容:

Public Sub Auto_Open()
If ActiveWorkbook.ReadOnly Then Exit Sub
Set accApp = CreateObject("Access.Application")
accApp.Visible = False
accApp.OpenCurrentDatabase ("i:database reportingmain.mdb")
accApp.CurrentDb.QueryDefs("blp_varience_estimate2").Execute
accApp.Quit
Sheets("Estimate Raw").Select
Range("A1").Select
Cells.Select
Selection.QueryTable.Refresh BackgroundQuery:=False
End Sub

请注意,在执行查询之前设置DoCmd.SetWarnings False可能也有效,但我的解决方案更干净(只是执行查询而不是隐藏警告,然后执行查询,然后尝试向用户显示结果(

最新更新