繁体   English   中英

如何使用EXCEL显示SQL Server 2005查询结果?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM