场合
我有5个Workbook connections
设置来自MS Access数据库的查询数据,我已经为他们指定了名称qry_1
,qry_2
,...,qry_5
我在工作表上名为qry_Table
的表中列出了这些查询名称的选择:
Query Name
----------
qry_1
qry_4
qry_5
我可以遍历表格(使用.listObjects
)将每个查询名称作为string
问题
我可以遍历工作簿中的所有查询并刷新所有查询,但我似乎无法弄清楚如何选择和刷新表中列出的那些查询,即qry_1
,{{1 }和qry_4
。
我希望能够qry_5
查询对象,以便我也可以定义set
字符串。
这可能吗?
备注
此处的代码显示了如何获取表格.Connection
Query Name
中的每一行
qry_Table
要刷新工作簿中的所有查询,我可以使用
dim wksControl As worksheet
dim objList As ListObject
set wksControl = worksheets("Control") 'the worksheet that contains 'qry_Table'
Set objList = wksControl.ListObjects("qry_Table")
With objList.ListColumns("Query Name").DataBodyRange
For i = 1 To .Rows.count
str = .Rows(i) 'query name to refresh
'***Required: Define the qry to refresh
Set qry = .QueryTable(str) '<~~ this code fails
'code to .Refresh BackgroundQuery:=False
Next i
End With
答案 0 :(得分:3)
您需要按名称引用ListObject
,而不是连接,然后访问其Querytable
属性:
With wks.Listobjects(str).QueryTable
答案 1 :(得分:0)
使用str = .Rows(i)
您将整行的范围分配给str,用str = .Cells(i,1).Value
替换该行应该有效,因为它将在i
行的第一列中返回值。