如何在VBA中引用和刷新Excel 2016中的QueryTable
我试图刷新一个单元格更改查询,但我不知道如何引用查询。
我的代码: Sheets("Roster Query").QueryTables(0).Refresh
只是错误与:
运行时错误“1004”:
应用程序定义或对象定义的错误
我有一个名为“名册filter”,有查询表我想刷新的工作表。 我怎样才能得到该QueryTable并刷新它?
编辑:也试过:
For Each qt In Sheets("Roster Query").QueryTables qt.Refresh Next
这不会错误,但查询不刷新。
在表是事物之前,查询表是旧版Excel的遗留物。 不知道如何甚至在Excel 2007+中创build一个。
如果你通过Data / Get External Data Ribbon菜单添加了你的QT,你添加的实际上是一个ListObject
。
我在Sheet1
上testing了这个,添加了一个简单的查询 – Excel为我创build了ListObject
:
在即时窗格中 ,我得到这些结果:
?Sheet1.QueryTables.Count 0 ?Sheet1.ListObjects.Count 1
我可以重现你完全相同的错误:
Sheet1.QueryTables(0).Refresh 'runtime error 1004
这个错误简直是令人难以置信的误导,就这样 – 它应该是一个超出界限的索引 。
解决scheme是刷新ListObject
:
Sheet1.ListObjects(1).Refresh 'works
您也可以通过ListObject
访问底层的 QueryTable
对象:
?Sheet1.ListObjects(1).QueryTable.CommandText 'gives you the query
您看到一个错误,因为.Item
方法是基数1,而不是基数0
例如,这在Excel 2016中适用于我:
Sheets("Roster Query").QueryTables(1).Refresh
所以,如果你只有一个QueryTable,它将是.QueryTables(1)
。