求助:Excel VBA为何无法找到Power Query导入的Query Table?
问题原因及解决方案
通过Power Query Editor导入的表,不属于VBA里的QueryTables集合——这个集合对应Excel早期的外部数据导入方式(比如直接从文本、网页导入的查询表),而Power Query生成的表本质是结构化表格(ListObject),对应的查询逻辑存在于WorkbookQueries集合中,这就是你用ActiveSheet.QueryTables.Count返回0的原因。
下面是两种常用的处理方式:
1. 获取Power Query生成的结构化表格
如果要操作工作表上的表对象,直接用ListObjects集合获取即可:
' 声明带事件的ListObject变量(放在模块顶部) Private WithEvents lo As ListObject Sub GetPowerQueryTable() ' 赋值工作表里的第一个结构化表格 Set lo = ActiveSheet.ListObjects(1) ' 查看该表格关联的Power Query名称 MsgBox "关联查询名:" & lo.QueryTable.Name ' 触发表格刷新 lo.Refresh End Sub
2. 直接操作Power Query的查询逻辑
如果要修改或调用Power Query本身的查询逻辑,用WorkbookQueries集合:
Sub GetPowerQueryQuery() Dim pqQuery As WorkbookQuery ' 替换成你的查询名称(可在「数据」选项卡→「查询和连接」面板里查看) Set pqQuery = ThisWorkbook.WorkbookQueries("你的查询名称") ' 查看查询的M代码 MsgBox "查询M代码:" & pqQuery.Formula ' 触发查询刷新 pqQuery.Refresh End Sub
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

