gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:49 25 4
gpt4 key购买 nike

我在使用 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 也没有这个问题。

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

最佳答案

感谢大家的反馈和想法。我们找到了一个对我们影响相当小的变通方法。

我们发现此问题仅出现在 Excel 2013 的查询表上,这些查询表在刷新 QueryTable 之前应用了筛选器。

我们的工作只是简单地从工作表中删除过滤,该工作表将 QueryTable 调用刷新并将 BackgroundQuery 设置为 false,然后将过滤器应用于我们的外部数据范围。

例子:

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

此解决方案可满足我们的需求,我希望遇到此问题的任何其他人都能发现此变通办法很有用。

关于c# - Excel 2013 - 1004 运行时错误刷新查询表 BackgroundQuery :=False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19916824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com