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 进行后期绑定
.net CLR 在 VBA (Access) 中的后期绑定