Excel VBA命名和更改Power Query的来源

时间:2018-07-14 04:01:30

标签: excel vba excel-vba powerquery

我有一个包含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

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

1 个答案:

答案 0 :(得分:0)

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

感谢Chillin找到此链接。

使用该链接中的一些代码,我设法仅从模板查询中复制了M代码以创建新查询并将其放在工作表上。但是现在我可以正常工作了,因为我有很多查询,导致工作表占用了大量内存(10G RAM),因此我可能不得不将每对查询拆分成自己的工作簿,并按顺序更新/保存每个查询。