当前位置: 首页 > 面试题库 >

Excel 2013-1004运行时错误刷新查询表BackgroundQuery:= False

韶浩博
2023-03-14
问题内容

刷新带有BackGroundQuery设置为False的QueryTable时,我遇到了Excel
2013的问题(出于我们的目的,BackgroundQuery必须设置为false)。当提供不返回任何数据的查询时,将发生1004运行时错误,最常见的原因是没有返回任何数据是在特定时间范围内或在特定资源上没有记录。

我的同事和我自己一直在尝试解决此问题,但尚未找到解决方案,我们进一步发现没有任何迹象表明Excel处理刷新查询表的方式发生了变化。

看一下VBA中正在发生什么的代码示例

    Dim sql As String
    sql = "SELECT 1 WHERE 1=0"
    Sheet1.QueryTables(1).sql = sql
    Sheet1.Activate
    Sheet1.Range("b11").Select
    Sheet1.QueryTables(1).Refresh BackgroundQuery:=False

刷新是指我们收到错误的时间。将Where条件更改为1 = 1会成功运行。

我们正在C#环境中运行这些报告,因此我们必须等待数据填充并保存报告。捕获错误并继续执行也是不可接受的解决方案,因为它是在相当关键的位置上非常普遍的错误。

Excel 2007和2010也不存在此问题。

在这个问题上的任何帮助将不胜感激。


问题答案:

谢谢大家的反馈和想法。我们发现解决此问题对我们的影响很小。

我们发现此问题仅在刷新了QueryTable之前已对其应用了筛选器的Query Table的Excel 2013中出现。

我们的工作只是从具有QueryTable调用的表(将BackgroundQuery设置为false)的工作表中删除过滤,然后将过滤器应用于我们的外部数据范围。

例子:

    Sheet3.AutoFilterMode = False
    Sheet3.QueryTables(1).Refresh BackgroundQuery:=False
    Sheet3.Range("ExternalData_3").AutoFilter

解决方案可以满足我们的需求,希望所有遇到此问题的人都能从中找到有用的解决方案。



 类似资料:
  • 我想选择一个特定范围的数据,但当我尝试这样做时,它会显示“Runtime Error 1004 General ODBC Error”并指出最后一行,.refresh BackgroundQuery:=false。我对VBA还很陌生,真的找不到解决这个问题的方法。当我使用SelectedDate更改where问题中的日期时,它才开始显示错误消息。

  • 我一直在为我的公司开发一个Excel宏,该宏打开几个工作簿,分析它们的特定信息行,存储该行,然后在完成每个工作簿后,在两个页面中的一个页面上设置单个工作簿中单元格的水平选择值。我遇到的问题是,在尝试选择第二个页面时,我需要将数据放在上面,我得到一个运行时错误1004。 我可以做什么来修复这个错误?

  • 我想基于同一工作簿中的数据集(包含在工作表中)创建一个透视表。 当我运行宏时,工作簿是打开的。数据集来自在Access中运行查询,然后将其导出到Excel。我还尝试在运行宏之前保存工作簿。我正在使用Excel2016。 这是我的代码: 资料截图。

  • 当使用此sub标记复选框时,我正试图写入单元格 但是,如果我只是打开工作表并单击复选框,我会得到运行时错误'1004':object'_worksheet'的方法'range'失败错误。 令我感到奇怪的是,如果我在模块中首次按下一个带有以下代码的按钮,我不会再得到错误,即使它是我放入Workbook_open事件中的代码: 谢谢你的帮助,我是一个VBA新手!

  • 在ruby on rails应用程序中,我有一个包含10,000个条目的表,可以使用不同的参数搜索这些条目。在dev框中,这很好,但在production框中,我得到了一个错误。 null 编辑 大约7秒钟后,我收到了“我们很抱歉,但出了点问题”的rails消息。我尝试增加keepalive_timeout,但没有任何变化。