Access RunTime错误2501 - 取消了OpenQuery操作

时间:2017-08-02 05:17:27

标签: excel-vba ms-access access-vba vba excel

尝试将前一名员工编写的旧数据库拼凑在一起,但是当在Excel中运行宏链接回访问数据库时,我得到运行时错误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

由于

1 个答案:

答案 0 :(得分:0)

<input class="input" type="text" only-digits-with-plus="" ng-model="phone"> 打开查询查询,并显示有关操作查询的警告框。您看到的错误是指警告框上的取消操作,可能没有显示,因为Access本身未显示,因此会自动取消。

从VBA运行查询的正确方法是通过QueryDefs集合: DoCmd.OpenQuery

将您的代码编辑为以下内容:

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 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 可能也有效,但我的解决方案更干净(只执行查询而不是隐藏警告,然后执行查询然后尝试向用户显示结果)