我有一个包含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
任何帮助将不胜感激。我需要的就是能够更改查询的来源和名称。
答案 0 :(得分:0)
https://gallery.technet.microsoft.com/office/VBA-to-automate-Power-956a52d1
感谢Chillin找到此链接。
使用该链接中的一些代码,我设法仅从模板查询中复制了M代码以创建新查询并将其放在工作表上。但是现在我可以正常工作了,因为我有很多查询,导致工作表占用了大量内存(10G RAM),因此我可能不得不将每对查询拆分成自己的工作簿,并按顺序更新/保存每个查询。