如何在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

Excel创建一个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)