【问题标题】:Excel 2010: Run time error 1004 general odbc errorExcel 2010:运行时错误 1004 一般 odbc 错误
【发布时间】:2015-03-18 16:31:27
【问题描述】:

我有一个小的 Excel 2010 查询超时(没有响应)然后得到错误Run time error 1004 general odbc error

当我调试时,它会突出显示这一行:

 Selection.QueryTable.Refresh BackgroundQuery:=False

这在 Excel 2007 中有效。

我尝试On Error Resume Next 让查询跳过任何错误并移至下一部分,但这没有帮助。

Sub Refresh_all()

    Application.ScreenUpdating = False

    Application.Goto Reference:="querycell"
    Range("A2").Select

    Selection.QueryTable.Refresh BackgroundQuery:=False

    Dim pt As PivotTable
    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshTable
        Next pt   
    Next ws

    Application.Goto Reference:="returncell"
    Range("A1").Select
    Application.ScreenUpdating = True

End Sub

【问题讨论】:

  • 您在哪一行收到错误消息?
  • @Gareth 会尝试让它再次出错,但大多数情况下它只是超时(excel 没有响应)。 2010年有什么不兼容的语法吗?
  • 即使删除On Error Resume Next语句,它是否仍然超时?除此之外,您确定要引用ActiveWorkbook 而不是ThisWorkbook
  • @Gareth 删除 On Error Resume Next 并将其更改为 THIS,现在我得到运行时错误 1004 一般 odbc 错误,当我单击调试时,它突出显示这一行 Selection.QueryTable.Refresh BackgroundQuery:=False

标签: excel excel-2010 vba


【解决方案1】:

对此非常奇怪的解决方案,但我将其提出以防将来有人发现他们自己陷入困境!

在命令文本中,其中一行是:

WHERE i.c LIKE NVL(?, '%')

由于某种原因,它在 Excel 2007 中有效,但在 2010 年无效

通过将其更改为它,它就像以前一样工作

WHERE i.c = ?

我相信比我更聪明的人会出现并给出背后的理由,但在那之前,这就是解决它的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多