[英]How to use EXCEL to display SQL Server 2005 Query Result?
我在SQL Server 2005中有50个数据库,每个数据库都有用于提取数据的相同表。 我编写了带有游标的SQL,以便它遍历所有指定的数据库。 我在50个不同的结果窗格中得到了结果。 我的要求是在excel电子表格中将结果导入并显示在50个不同的工作表中。 我的问题:Excel中是否可以使用一种方法来自动将结果显示在50个不同的工作表中?
谢谢
是。 您可以通过使用VBA来实现。 我记录了一个宏,您在其中将这些表之一导入一个(新添加的)工作表中。 然后,您可以更改此新记录的宏以自动创建所有工作表和查询。
编辑:要开始,您可以阅读以下线程中提供的资源: 如何开始使用Visual Basic for Applications? 或在Word 2007中从哪里开始使用VBA和宏编程? (实际上也链接到视频)。
您可以创建临时表
create table #t (id int, col1 varchar, col2 varchar)
您可以在游标中插入来自50个不同数据库的数据
insert #t(id, col1, col2)
select id, col1, col2
from SomeDatabase.dbo.tt
然后从其中选择所有数据 到一个窗格 。
select * from #t
不要让数据操纵您。 自己操作:)
我经常使用以下脚本将MSSQL数据喷出到Excel工作表中。 也许这就是您想要的。
Sub ConnectSqlServer()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sConnString As String
' Create the connection string.
sConnString = "Trusted_Connection=yes;Database=database;Server=sql;Driver={SQL Server}"
'conn.Open connString
' Create the Connection and Recordset objects.
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
' Open the connection and execute.
'LOOP OVER SHEETS WITH DIFFERENT TABLES
conn.Open sConnString
For i = 1 To 50
Set rs = conn.Execute("SELECT * FROM TABLE")
' Check we have data.
If Not rs.EOF Then
' Transfer result.
Sheets(i).Range("A2").CopyFromRecordset rs
' Close the recordset
rs.Close
Else
MsgBox "Error: No records returned.", vbCritical
End If
Next i
'END LOOP
' Clean up
If CBool(conn.State And adStateOpen) Then conn.Close
Set conn = Nothing
Set rs = Nothing
结束子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.