将数据从 Microsoft SQL Server 导入 Microsoft Excel

概要 概要
  要求 要求
  引用 ADO 对象库 引用 ADO 对象库
  创建连接 创建连接
  提取数据 提取数据
  验证能否正常工作 验证能否正常工作
  疑难解答 疑难解答
参考 参考
这篇文章中的信息适用于: 这篇文章中的信息适用于:

概要

本文逐步介绍如何将数据从 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 站点可以找到其他代码示例:
http://www.msdn.microsoft.com/ (http://www.msdn.microsoft.com/)







这篇文章中的信息适用于:
Microsoft Office Excel 2003
Microsoft Excel 2002 标准版
posted @ 2006-03-31 10:53  致远钓客  阅读(1416)  评论(0编辑  收藏  举报