2017-02-18 43 views
1

我使用Power Query在Excel 2016中创建了工作簿。我正在使用代码来更改查询。但我希望能够在Excel 2013中运行它。如何修改我的代码以访问查询?如何在Excel 2016中创建电子查询时修改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 

以上的回报:命令文本:SELECT * FROM [QueryCurrent] 连接字符串:供应商= Microsoft.Mashup.OleDb.1;数据源= $工作簿$;位置= QueryCurrent;扩展属性= “”
命令类型:SQL

我真正想要的是修改QueryCurrent。我怎么做?

回答

0

这是一种解决方法。我不知道是否有任何方法可以使用Excel 2013从VBA修改原始(Power Query)查询。

我终于意识到我可以简单地避免使用Power Query编辑器。在Excel中输入与以前版本相同的查询:在功能区上>数据>连接>属性>定义选项卡>在那里输入查询和连接字符串。然后使用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 

工作正常。