现在的位置: 首页 > 综合 > 正文

如何使用 ADO 将数据从 ADO 数据源传输到 Excel

2013年08月23日 ⁄ 综合 ⁄ 共 1941字 ⁄ 字号 评论关闭

[转自微软知识库]如何使用 ADO 将数据从 ADO 数据源传输到 Excel
文章 ID : 295646
最后更新日期 : 2004年3月25日
版本 : 1.4
本页内容
 概要
 更多信息
 参考

概要
由于 Microsoft Excel 是如此强大的数据分析工具,Visual Basic 和 VBA 应用程序开发人员经常要将数据放到 Excel 工作表中进行分析。本文介绍使用 ActiveX 数据对象 (ADO) 完成此编程任务的方法,其中对于某些 SQL 命令使用了 Microsoft Jet 特定的语法。

本文介绍编程解决方案,而不介绍 Excel 的菜单驱动数据导入功能(通过File(文件) 菜单中的Open(打开) 选项}或 Microsoft 查询(从Data(数据) 菜单中的Get External Data(获取外部数据) 选项)的用法。

有关使用 Excel Automation 而不是 SQL 命令的补充编程解决方案的其他信息,请单击下面的文章编号,查看 Microsoft 知识库文章:
246335 HOWTO:Transfer Data from ADO Recordset to Excel with Automation(HOWTO:用 Automation 将数据从 ADO 记录集传送到 Excel)
更多信息
在随后的示例中,cnSrc 代表一个打开的 ADO 连接,连接到使用 Jet 4.0 OLE DB Provider 的 Northwind 示例 Jet 数据库。
如何复制
您可以使用 SELECT INTO 语句将 Jet 可以读取的任何数据源中的数据复制到任何数据目标,随时创建新的表(在 Excel 中为新工作表)。将工作表名称用作目标时,不要使用美元符号语法,例如 [Sheet1$]。目标工作薄可以存在,也可以不存在;但是,目标工作表必须尚未 存在。

对于将整个 Customers 表从 Microsoft Access Northwind 数据库复制到 Excel 工作薄的新工作表中的复制命令,有三种编写方法。每种语法需要一个 SQL 语句并在目标工作表的第一行创建列标题。 ? 以下示例使用 SELECT INTO 语法:Dim strSQL As String
strSQL = "SELECT * INTO [Excel 8.0;Database=" & App.Path & _
    "/book1.xls].[Sheet1] FROM Customers"
cnSrc.Execute strSQL
     
 
? 以下示例使用 SELECT INTO ...IN 语法: strSQL = "SELECT * INTO [Sheet1] IN '' [Excel 8.0;Database=" & App.Path & _
    "/book1.xls] FROM Customers"
      
其中,括号中的目标数据库信息的前面有一对空的单引号,用来包括类型参数(“Excel 8.0”部分),当您使用此语法时,类型参数括在括号中。
? 以下示例使用 IN 子句的替代语法: strSQL = "SELECT * INTO [Sheet1] IN '" & App.Path & _
    "/book1.xls' 'Excel 8.0;' FROM Customers"
      
其中,类型参数现在被单独列在目标文件路径之后。

如何附加
您可以使用 INSERT INTO ...IN 语句将任何 Jet 可以读取的数据源中的数据附加到任何数据目标中。目标工作薄和目标工作表都必须存在。由于您现在引用的是现有工作表,当您将工作表名称用作目标时,必须使用标准的美元符号语法,例如 [Sheet1$]。另外,列标题必须已经存在;也就是说,该语句只能用于附加到现有的表。

对于将整个 Customers 表从 Northwind 数据库复制到已经有适当列标题的现有 Excel 工作表中的附加命令,有两种编写方法。 ? 以下示例使用 SELECT INTO ...IN 语法: strSQL = "INSERT INTO [Sheet1$] IN '' [Excel 8.0;Database=" & App.Path & _
    "/book1.xls] SELECT * FROM Customers"
      
其中,括号中的目标数据库信息的前面同样有一对空引号用来包括类型参数,现在该参数用括号括了起来。
? 以下示例使用 IN 子句的替代语法:strSQL = "INSERT INTO [Sheet1$] IN '" & App.Path & _
    "/book1.xls' 'Excel 8.0;' SELECT * FROM Customers"
     
 
Microsoft Data Access Components (MDAC) 2.6 版和更高版本不包含下列 Jet 组件:
参考
有关此 Jet 特定语法的其他信息,特别是有关 SELECT INTO 语句、INSERT INTO 语句和 IN 子句的主题,请查阅 Jet SQL 帮助文件 (JETSQL40.chm)。

抱歉!评论已关闭.