Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 访问运行时错误2501-OpenQuery操作已取消_Excel_Ms Access_Vba - Fatal编程技术网

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

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

试图拼凑前一位员工编写的旧数据库,但在excel中运行宏以链接回access数据库时,我得到运行时错误2501,下面给出的代码有人有什么想法吗

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中运行查询以从其他表中提取