Excel 访问运行时错误2501-OpenQuery操作已取消
试图拼凑前一位员工编写的旧数据库,但在excel中运行宏以链接回access数据库时,我得到运行时错误2501,下面给出的代码有人有什么想法吗Excel 访问运行时错误2501-OpenQuery操作已取消,excel,ms-access,vba,Excel,Ms Access,Vba,试图拼凑前一位员工编写的旧数据库,但在excel中运行宏以链接回access数据库时,我得到运行时错误2501,下面给出的代码有人有什么想法吗 Public Sub Auto_Open() If ActiveWorkbook.ReadOnly Then Exit Sub Set accApp = CreateObject("Access.Application") accApp.Visible = False accApp.OpenCurrentDatabase
Public Sub Auto_Open()
If ActiveWorkbook.ReadOnly Then Exit Sub
Set accApp = CreateObject("Access.Application")
accApp.Visible = False
accApp.OpenCurrentDatabase ("i:\database reporting\main.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.querydfs(“MyQuery”)。执行
将代码编辑为以下内容:
Public Sub Auto_Open()
If ActiveWorkbook.ReadOnly Then Exit Sub
Set accApp = CreateObject("Access.Application")
accApp.Visible = False
accApp.OpenCurrentDatabase ("i:\database reporting\main.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
也可能有效,但我的解决方案更干净(只执行查询而不是隐藏警告,然后执行查询,然后尝试向用户显示结果)通常应忽略错误2501。请检查查询:直接打开mdb并运行查询。它不应该给出任何错误。是的,我想,但是如果我跳过它并忽略它,我会得到以下运行时错误2001您取消了以前的操作是“blp_varience_estimate2”更新查询?它做什么?是的,它在access中运行查询以从其他表中提取