Dou*_*ell 4 excel vba excel-vba excel-2016
我正在尝试刷新单元格更改的查询,但我无法弄清楚如何引用查询.
我的代码: Sheets("Roster Query").QueryTables(0).Refresh
只是错误:
运行时错误'1004':
应用程序定义或对象定义的错误
我有一个名为"名册过滤器"的工作表,其中包含我要刷新的查询表.如何获取QueryTable并刷新它?
编辑:还试过:
For Each qt In Sheets("Roster Query").QueryTables
    qt.Refresh
Next
这不会出错,但查询不会刷新.
Mat*_*don 12
在表格之前,查询表是旧版Excel的遗留物.不知道如何在Excel 2007+中创建一个.
如果您通过" 数据/获取外部数据功能区"菜单添加了QT ,那么您添加的实际上是一个ListObject.
我测试了这个Sheet1,添加了一个简单的查询 -  Excel ListObject为我创建了:

在即时窗格中,我得到以下结果:
?Sheet1.QueryTables.Count
 0
?Sheet1.ListObjects.Count
 1
我可以重现你完全相同的错误:
Sheet1.QueryTables(0).Refresh 'runtime error 1004
这个错误只是极其误导,这就是全部 - 它应该是一个超出范围的索引.
解决方案是刷新ListObject而不是:
Sheet1.ListObjects(1).Refresh 'works
您也可以通过以下方式访问基础 QueryTable对象ListObject:
?Sheet1.ListObjects(1).QueryTable.CommandText 'gives you the query
| 归档时间: | 
 | 
| 查看次数: | 21720 次 | 
| 最近记录: |