小编典典

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

sql

刷新带有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也不存在此问题。

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


阅读 394

收藏
2021-04-07

共1个答案

小编典典

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

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

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

例子:

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

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

2021-04-07