本文逐步介紹如何將數據從 Microsoft SQL Server 附帶的示例數據庫 Pubs 中導入 Microsoft Excel。
ActiveX 數據對象 (ADO) 可用來(lái)訪(fǎng)問(wèn)任意類(lèi)型的數據源。它是具有少數幾個(gè)對象的平面對象模型。ADO 對象模型中的主要對象有:
對象 說(shuō)明--------------------------------------------------------------------------Connection 指示到數據源的連接。Recordset 指示所提取的數據。Command 指示需要執行的存儲過(guò)程或 SQL 語(yǔ)句。
盡管使用 ADO 返回記錄集有很多種方法,但本文主要介紹 Connection 和 Recordset 對象。
要求
必須具有運行 Microsoft SQL Server 且包含 Pubs 數據庫的本地服務(wù)器。
Microsoft 建議您掌握以下幾個(gè)方面的知識:
| • | 在 Office 程序中創(chuàng )建 Visual Basic for Applications 過(guò)程。 |
| • | 使用 Object 變量。 |
| • | 使用 Excel 對象。 |
| • | 關(guān)系數據庫管理系統 (RDBMS) 概念。 |
| • | 結構化查詢(xún)語(yǔ)言 (SQL) SELECT 語(yǔ)句 |
引用 ADO 對象庫
| 1. | 啟動(dòng) Excel。打開(kāi)一個(gè)新工作簿,然后將其保存為 SQLExtract.xls。 |
| 2. | 啟動(dòng) Visual Basic 編輯器并選擇您的 VBA 項目。 |
| 3. | 在工具菜單上,單擊引用。 |
| 4. | 單擊以選中最新版本的 Microsoft ActiveX 數據對象庫的復選框。 |
創(chuàng )建連接
| 1. | 在項目中插入一個(gè)新模塊。 |
| 2. | 創(chuàng )建一個(gè)新的名為 DataExtract 的子過(guò)程。 |
| 3. | 鍵入或粘貼以下代碼:‘ Create a connection object.Dim cnPubs As ADODB.ConnectionSet cnPubs = New ADODB.Connection‘ Provide the connection string.Dim strConn As String‘Use the SQL Server OLE DB Provider.strConn = "PROVIDER=SQLOLEDB;"‘Connect to the Pubs database on the local server.strConn = strConn & "DATA SOURCE=(local);INITIAL CATALOG=pubs;"‘Use an integrated login.strConn = strConn & " INTEGRATED SECURITY=sspi;"‘Now open the connection.cnPubs.Open strConn |
提取數據
鍵入或粘貼以下代碼以提取您的記錄:
‘ Create a recordset object.Dim rsPubs As ADODB.RecordsetSet rsPubs = New ADODB.RecordsetWith rsPubs ‘ Assign the Connection object. .ActiveConnection = cnPubs ‘ Extract the required records. .Open "SELECT * FROM Authors" ‘ Copy the records into cell A1 on Sheet1. Sheet1.Range("A1").CopyFromRecordset rsPubs ‘ Tidy up .CloseEnd WithcnPubs.CloseSet rsPubs = NothingSet cnPubs = Nothing 驗證能否正常工作
| 1. | 運行上述代碼。 |
| 2. | 切換到 Excel 并在工作簿的 Sheet1 中查看數據。 |
疑難解答
如果代碼似乎掛起并出現運行時(shí)錯誤,則數據庫服務(wù)器可能已停機。您可以使用 ConnectionTimeout 屬性來(lái)控制返回運行時(shí)錯誤所需的時(shí)間。請將此屬性的值設置為大于零。如果將該值設置為零,則連接將永遠不會(huì )超時(shí)。默認值是 15 秒。
通過(guò)搜索以下 Microsoft Web 站點(diǎn)可以找到其他代碼示例: