你目前正处于脱机状态,正在等待 Internet 重新连接

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

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

本文介绍编程解决方案,而不是介绍 Excel 的菜单驱动数据导入功能(通过文件菜单上的打开选项)或如何使用 Microsoft 查询(从数据菜单中的获取外部数据选项)。

有关使用 Excel 自动化而不是 SQL 命令的补充编程解决方案的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
246335 如何使用“自动化”功能将数据从 ADO 记录集传输到 Excel
更多信息
在下文的示例中,cnSrc 表示一个打开的 ADO 连接,连接到使用 Jet 4.0 OLE DB 提供程序的 Northwind 示例 Jet 数据库。

如何复制

您可以使用 SELECT INTO 语句将 Jet 可以读取的任何数据源中的数据复制到任何数据目标,随时创建新的表(在 Excel 中为新工作表)。将工作表名称用作目标时,不要使用美元符号语法,例如 [Sheet1$]。目标工作簿可以存在,也可以不存在;但是,目标工作表必须尚未存在。

对于将整个 Customers 表从 Microsoft Access Northwind 数据库复制到 Excel 工作簿的新工作表中的复制命令,有三种编写方法。每种语法需要一个 SQL 语句并在目标工作表的第一行创建列标题。
  • 以下示例使用 SELECT INTO 语法:
    Dim strSQL As StringstrSQL = "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"					
参考
有关此 Jet 特定语法的其他信息,请参考 Jet SQL 帮助文件 (JETSQL40.chm),特别是有关 SELECT INTO 语句、INSERT INTO 语句和 IN 子句的主题。
属性

文章 ID:295646 - 上次审阅时间:11/17/2005 12:14:00 - 修订版本: 2.3

  • Microsoft Excel 2000 标准版
  • Microsoft Visual Basic 5.0 企业版
  • Microsoft Visual Basic 6.0 企业版
  • Microsoft Visual Basic 5.0 专业版
  • Microsoft Visual Basic 6.0 专业版
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Excel 97 标准版
  • kbhowto kbdatabase kbjet kbmdacnosweep KB295646
反馈