首页 > 解决方案 > Excel VBA 命名和更改 Power Query 的来源

问题描述

我有一张包含 2 个查询的表格,用于查询我用作模板的 2 个不同网页。我需要创建更多具有不同来源和名称的相同 2 个查询的工作表(以便更容易索引)。

但是我不知道如何更改查询参数。到目前为止,我已经完成了所有其他工作。

我使用记录宏开始手动复制模板页面并更改值,但是宏甚至无法正确设置值。它使用了以下查询

ActiveSheet.ListObjects("queryname").Name = "newname"

这根本不起作用。我也环顾四周,找到了成功的人。

.Listobjects("queryname").QueryTables.Name = "newname"

QueryTables.("queryname").Name = "newname"

这是我到目前为止的宏。它所做的只是从选定的单元格中复制当前文本,并在复制模板表后使用它来命名所有内容。

Excel 不会在运行此代码时引发任何错误。它运行整个代码,但不会更改表的名称。

Sub Setup()
    Dim item As String
    Dim bName As String
    Dim sName As String
    Dim TbName As String
    Dim TsName As String

    item = Selection.Value

    Sheets("Query Template").Copy Before:=Sheets(6)
    Sheets("Query Template (2)").Select
    Sheets("Query Template (2)").Name = item

    sName = "S_" & Replace(item, " ", "_")
    bName = "B_" & Replace(item, " ", "_")
    TbName = "BTemplate (2)"
    TsName = "STemplate (2)"

    'this is where I try to change the query names.
    With ActiveWorkbook.Connections("Query - " & TbName)
        .Name = "Query - " & bName
    End With

    With ActiveWorkbook.Connections("Query - " & TsName)
        .Name = "Query - " & sName
    End With

    Sheets(item).Range("A2:D2").Select
    ActiveWorkbook.Names.Add Name:="BLink" & Replace(item, " ", "_"), 
        RefersToR1C1:="='" & item & "'!R2C1"

    Sheets(item).Range("F2:I2").Select
    ActiveWorkbook.Names.Add Name:="SLink" & Replace(item, " ", "_"), 
        RefersToR1C1:="='" & item & "'!R2C6"

End Sub

任何帮助,将不胜感激。我所需要的只是能够更改查询的来源和名称。

标签: vbaexcelpowerquery

解决方案


https://gallery.technet.microsoft.com/office/VBA-to-automate-Power-956a52d1

感谢 Chillin 找到此链接。

使用该链接中的一些代码,我设法从模板查询中复制 M 代码以创建新查询并将它们放在工作表上。我让它工作了,但是现在我有很多查询使工作表占用了大量内存(10G RAM),所以我可能必须将每对查询拆分到自己的工作簿中并按顺序更新/保存每个查询。


推荐阅读