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

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

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

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

非常感谢

【问题讨论】:

标签: excel vba dao late-binding


【解决方案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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多