【问题标题】:How do I modify query in Excel 2013 when created in Excel 2016 Power Query在 Excel 2016 Power Query 中创建时如何修改 Excel 2013 中的查询
【发布时间】:2017-02-18 08:27:08
【问题描述】:

我使用 Power Query 在 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] 连接字符串:Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=QueryCurrent;Extended Properties=""
命令类型:SQL

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

【问题讨论】:

    标签: excel powerquery vba


    【解决方案1】:

    这是一种解决方法。我不知道是否有任何方法可以使用 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
    

    工作正常。

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 2020-01-19
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多