首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel 2013 - 1004运行时错误刷新查询表BackgroundQuery:=False

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

Stack Overflow用户
提问于 2013-11-12 06:01:24
回答 1查看 11.5K关注 0票数 2

在BackGroundQuery设置为False的情况下刷新QueryTable时,我遇到了Excel2013的问题(出于我们的目的,BackgroundQuery必须设置为false )。如果提供的查询不返回数据,则会发生1004运行时错误,导致不返回数据的最常见原因是没有特定时间范围或特定资源的记录。

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

下面是一个示例代码,用于查看VBA中发生的情况:

代码语言:javascript
运行
复制
    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没有此问题。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-13 00:03:40

感谢你们所有人的反馈和想法。我们找到了一个对我们影响很小的工作。

我们发现这个问题只存在于Excel2013的查询表中,这些查询表在QueryTable刷新之前应用了筛选器。

我们的工作只是简单地从表中删除了过滤,该表的QueryTable调用refresh with BackgroundQuery设置为false,然后将过滤器应用到外部数据区域。

示例:

代码语言:javascript
运行
复制
    Sheet3.AutoFilterMode = False
    Sheet3.QueryTables(1).Refresh BackgroundQuery:=False
    Sheet3.Range("ExternalData_3").AutoFilter

这个解决方案可以满足我们的需求,我希望遇到这个问题的任何其他人都能找到有用的工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19916824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档