Excel VBA后期绑定Microsoft DAO 3.6对象库

Posted

技术标签:

【中文标题】Excel VBA后期绑定Microsoft DAO 3.6对象库【英文标题】:Excel VBA late bind Microsoft DAO 3.6 object library 【发布时间】:2016-06-09 10:24:01 【问题描述】:

任何人都可以发布关于如何从 Excel 2007 创建对 Microsoft DAO 3.6 对象库的引用的 sn-p 吗?

我知道我需要使用 CreateObject 方法,但我无法在网上找到任何有关正确参数的信息,以专门引用 DAO 3.6。

我需要延迟绑定,因为我无法使用该文件在每台 PC 上手动设置引用。

非常感谢

【问题讨论】:

你试过用vba添加引用吗?***.com/questions/9879825/… 【参考方案1】:

了解 DAO 的最佳地点是 Microsoft 的开发人员网络。有很多documentation on the subject。

VBA 支持三种数据访问技术。 DAO, ADO and RDO。其中,Microsoft 建议您使用 ADO,这是三者中较新的。

我一直在尝试编写一个后期绑定的 Excel DAO 示例,但遇到了一些麻烦。我只能使用早期绑定方法。

Sub ExampleEarly()
    Dim DB As DAO.database
   Dim RS As DAO.Recordset


    ' Connect to Excel spreadsheet and read from tab called VA.
    Set DB = OpenDatabase("C:\Example\ExcelFile.xls", False, True, "Excel 8.0;HDR=Yes")
    Set RS = DB.OpenRecordset("SELECT * FROM [VA$]")

'Close the recordset
    RS.Close    
    DB.Close
    Set RS = Nothing    
    Set DB = Nothing
End Sub 

ADO 可以像这样被后期绑定:

Dim cn As Object
Dim rs AS Object

Set cn = CreateObject("ADODB.Connection")
Set rs= CreateObject("ADODB.Recordset")

【讨论】:

【参考方案2】:

用于 DAO 后期绑定。如果您在代码中使用 ADO,则未经过完全测试的兼容性,但它在我的项目中目前有效。

Dim db As Object  'late binding without reference, seems to work, but might cause trouble, not tested
Dim tbl As Object

Dim dbe As Object
Set dbe = CreateObject("DAO.DBEngine.120")  'depends on win version!


Set db = dbe.OpenDatabase(file)
Set tbl = db.TableDefs("CAPEX")

【讨论】:

以上是关于Excel VBA后期绑定Microsoft DAO 3.6对象库的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Excel 2007 VBA 中使用 Option Strict Off 进行后期绑定

如何在Excel VBA中使用字典Dictionary对象

通过 VBA 发送具有后期绑定错误的电子邮件

.net CLR 在 VBA (Access) 中的后期绑定

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

(VBA)Acrobat类型库的后期绑定(避免引用)