如何在 Excel 2016 Power Query 中创建时修改 Excel 2013 中的查询
How do I modify query in Excel 2013 when created in Excel 2016 Power Query
我在 Excel 2016 年使用 Power Query 创建了一个工作簿。我正在使用代码来更改查询。但我也希望能够在 Excel 2013 年 运行 这个。如何修改我的代码以访问查询?
这是我的代码在 Excel 2016 年有效,但在 2013 年或更早的时候无效。
Sub UpdateQuery()
Dim CmdText As String
'Compile error here "User Defined Type not defined"
Dim qry As WorkbookQuery
'Compile error here "Method or data member not found"
Set qry = ThisWorkbook.Queries("CurrentQuery")
CmdText = qry.Formula
CmdText = ... make a change
qry.Formula = CmdText
End Sub
这段代码 运行 在 Excel 2013 年没问题,但没有得到我想要的。
Sub UpdateQuery2013()
Dim cmdText As String
Dim lo As ListObject
Set lo = ws.ListObjects("CurrentTable")
CmdText = lo.QueryTable.CommandText
CmdText = ... make a change
lo.QueryTable.CommandText = cmdText
End Sub
以上returns:命令文本:SELECT * FROM [QueryCurrent]
连接字符串:Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=QueryCurrent;Extended Properties=""
命令类型:SQL
我真正想要的是修改QueryCurrent。我该怎么做?
这是一种解决方法。我不知道是否有任何方法可以使用 Excel 2013 修改来自 VBA 的原始(Power Query)查询。
我终于意识到我可以简单地避免使用 Power Query 编辑器。在 Excel 中输入查询,与以前的版本相同:在功能区 > 数据 > 连接 > 属性 > 定义选项卡 > 在此处输入查询和连接字符串。然后使用Excel2013代码修改
Sub UpdateQuery2013()
Dim cmdText As String
Dim lo As ListObject
Set lo = ws.ListObjects("CurrentTable")
CmdText = lo.QueryTable.CommandText
CmdText = ... make a change
lo.QueryTable.CommandText = cmdText
End Sub
工作正常。
我在 Excel 2016 年使用 Power Query 创建了一个工作簿。我正在使用代码来更改查询。但我也希望能够在 Excel 2013 年 运行 这个。如何修改我的代码以访问查询?
这是我的代码在 Excel 2016 年有效,但在 2013 年或更早的时候无效。
Sub UpdateQuery()
Dim CmdText As String
'Compile error here "User Defined Type not defined"
Dim qry As WorkbookQuery
'Compile error here "Method or data member not found"
Set qry = ThisWorkbook.Queries("CurrentQuery")
CmdText = qry.Formula
CmdText = ... make a change
qry.Formula = CmdText
End Sub
这段代码 运行 在 Excel 2013 年没问题,但没有得到我想要的。
Sub UpdateQuery2013()
Dim cmdText As String
Dim lo As ListObject
Set lo = ws.ListObjects("CurrentTable")
CmdText = lo.QueryTable.CommandText
CmdText = ... make a change
lo.QueryTable.CommandText = cmdText
End Sub
以上returns:命令文本:SELECT * FROM [QueryCurrent]
连接字符串:Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=QueryCurrent;Extended Properties=""
命令类型:SQL
我真正想要的是修改QueryCurrent。我该怎么做?
这是一种解决方法。我不知道是否有任何方法可以使用 Excel 2013 修改来自 VBA 的原始(Power Query)查询。
我终于意识到我可以简单地避免使用 Power Query 编辑器。在 Excel 中输入查询,与以前的版本相同:在功能区 > 数据 > 连接 > 属性 > 定义选项卡 > 在此处输入查询和连接字符串。然后使用Excel2013代码修改
Sub UpdateQuery2013()
Dim cmdText As String
Dim lo As ListObject
Set lo = ws.ListObjects("CurrentTable")
CmdText = lo.QueryTable.CommandText
CmdText = ... make a change
lo.QueryTable.CommandText = cmdText
End Sub
工作正常。