将数据从 Microsoft SQL Server 导入 Microsoft Excel
原创
©著作权归作者所有:来自51CTO博客作者mb612d937e03234的原创作品,请联系作者获取转载授权,否则将追究法律责任
本文逐步介绍如何将数据从 Microsoft SQL Server 附带的示例数据库 Pubs 中导入 Microsoft Excel。
概要
本文逐步介绍如何将数据从 Microsoft SQL Server 附带的示例数据库 Pubs 中导入 Microsoft Excel。
ActiveX 数据对象 (ADO) 可用来访问任意类型的数据源。它是具有少数几个对象的平面对象模型。ADO 对象模型中的主要对象有:
对象 说明
--------------------------------------------------------------------------
Connection 指示到数据源的连接。
Recordset 指示所提取的数据。
Command 指示需要执行的存储过程或 SQL 语句。
尽管使用 ADO 返回记录集有很多种方法,但本文主要介绍 Connection 和 Recordset 对象。
要求
必须具有运行 Microsoft SQL Server 且包含 Pubs 数据库的本地服务器。
Microsoft 建议您掌握以下几个方面的知识:
• |
在 Office 程序中创建 Visual Basic for Applications 过程。 |
• |
使用 Object 变量。 |
• |
使用 Excel 对象。 |
• |
关系数据库管理系统 (RDBMS) 概念。 |
• |
结构化查询语言 (SQL) SELECT 语句 |
引用 ADO 对象库
1. |
启动 Excel。打开一个新工作簿,然后将其保存为 SQLExtract.xls。 |
2. |
启动 Visual Basic 编辑器并选择您的 VBA 项目。 |
3. |
在工具菜单上,单击引用。 |
4. |
单击以选中最新版本的 Microsoft ActiveX 数据对象库的复选框。 |
创建连接
1. |
在项目中插入一个新模块。 |
2. |
创建一个新的名为 DataExtract 的子过程。 |
3. |
键入或粘贴以下代码:
' Create a connection object.
Dim cnPubs As ADODB.Connection
Set 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.Recordset
Set rsPubs = New ADODB.Recordset
With 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
.Close
End With
cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing
验证能否正常工作
1. |
运行上述代码。 |
2. |
切换到 Excel 并在工作簿的 Sheet1 中查看数据。 |
疑难解答
如果代码似乎挂起并出现运行时错误,则数据库服务器可能已停机。您可以使用 ConnectionTimeout 属性来控制返回运行时错误所需的时间。请将此属性的值设置为大于零。如果将该值设置为零,则连接将永远不会超时。默认值是 15 秒。
参考
通过搜索以下 Microsoft Web 站点可以找到其他代码示例:
这篇文章中的信息适用于:
• |
Microsoft Office Excel 2003 |
• |
Microsoft Excel 2002 标准版 |