如何将过滤后的QueryTable加载到Excel电子表格?

时间:2011-10-25 13:18:16

标签: excel vba

如果我在DB中有以下格式的数据:

+--------+--------+-------+
| Server | Client | Usage |
+--------+--------+-------+     
| London | Bob    | 10%   |
| London | Alice  | 20%   |
| Tokyo  | Charlie| 30%   |
| Tokyo  | Zeke   | 40%   |
+--------+--------+-------+     

我想要一个包含每个Server数据的电子表格,但我事先并不知道哪些服务器会出现以及出现的数量。通过数据>连接我创建的CommonConnection将获取所有数据。

问题:有没有办法在单独的电子表格中使用此单一连接显示每台服务器的信息?像SELECT * FROM %CommonConnection% WHERE Server='London'这样的东西(%%语法是推测的)。

我正在编写一个VBA脚本,它将读取服务器,为每个服务器创建电子表格并设置过滤器。现在看来我必须连接一个服务器列表,然后为每个服务器创建一个专用连接。由于我不知道确切的服务器数量,因此必须在重新加载时删除这些连接。

1 个答案:

答案 0 :(得分:0)

好的,我还没有找到一种原生方式,所以一切都是通过宏完成的。此解决方案有多个缺点,一个是您必须对启用宏的工作簿.xlsm具有特殊扩展名。

Set cnt = New ADODB.connection
Set rst = New ADODB.Recordset

cnt.Open "Provider=SQLOLEDB.1;Integrated Security= ...."
rst.Open "SELECT ...", cnt

While Not rst.EOF
    server = rst.Fields(0).Value
    ' get other values as well
    Worksheets(server).Range("whatever").Value = Array(server, value1, value2, etc)
Wend