簡體   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