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

文章翻译 文章翻译
文章编号: 295646 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

由于 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 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"
    					

参考

有关此 Jet 特定语法的其他信息,请参考 Jet SQL 帮助文件 (JETSQL40.chm),特别是有关 SELECT INTO 语句、INSERT INTO 语句和 IN 子句的主题。

属性

文章编号: 295646 - 最后修改: 2005年11月17日 - 修订: 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
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com