在 VBA 中打开与 Excel 电子表格的 ADO 连接

Posted

技术标签:

【中文标题】在 VBA 中打开与 Excel 电子表格的 ADO 连接【英文标题】:Opening ADO connection to Excel Spreadsheet in VBA 【发布时间】:2010-11-08 15:26:01 【问题描述】:

如何打开与 Excel 2007 电子表格的 ADO 连接?

我这样做是为了将数据导入 Access 2007。相当烦人的是,数据需要在导入之前进行过滤和预处理,因此我要打开 ADO 连接来读取它。

【问题讨论】:

【参考方案1】:
Set oConn = CreateObject("ADODB.Connection")
oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcel2007File.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
oConn.Open

请注意,您需要使用 ACE driver 而不是 JET。另见Connection strings for Excel 2007。

【讨论】:

【参考方案2】:

如果您要多次运行导入(即:某种类型的每日报告服务),您可能想尝试与 ADO 不同的方法。

我最终在 Access 中创建了一个模块,该模块预处理 Excel 工作表(因为每天导入的工作表都会更改),然后将工作表设置为链接表的源。然后,我使用“INSERT INTO”DoCmd.RunSQL 调用查询链接表,以将数据从 Excel 中取出并放入数据库。

如果您愿意,我可以详细说明。

【讨论】:

您可以使用 ADO 创建链接表并执行 INSERT INTO 语句。【参考方案3】:
 Set cnn = New ADODB.Connection
    'cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFullFileName & ";Extended Properties = Excel 12.0 Macro; HDR=No;"
    'cnn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; data source=" & sFullFileName & ";Extended Properties=Excel 8.0"
    cnn.ConnectionString = "DRIVER=Microsoft Excel Driver (*.xls);ReadOnly=1;DBQ=" & sFullFileName
    cnn.Open

【讨论】:

以上是关于在 VBA 中打开与 Excel 电子表格的 ADO 连接的主要内容,如果未能解决你的问题,请参考以下文章

在使用 VBA 的 MS Access 链接的 Excel 电子表格中指定“开放式”范围

在EXCEL中用VBA怎样操作WORD文档中嵌入的EXCEL表格?

Excel中的VBA创建带有表格和签名的电子邮件

将图像嵌入到 Excel 电子表格 - VBA

使用VBA破解Excel电子表格密码

如何使用 VBA 在 Excel 中添加连接(到外部数据源)并将其保存到该 Excel 电子表格的连接列表