尝试使用DAO从Access外部(Outlook/Excel)连接到有效的数据库会生成3343无法识别的数据库格式错误

use*_*765 4 vba dao

谢谢你的网站.精彩的信息.

简而言之,我试图从Outlook(2007)执行以下代码,尽管它在Excel中也失败了.工作很棒INSIDE Access!

Sub Test

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Const dbPath As String = "C:\Users\e574651.GLOBAL\Documents\Northwind 2007.accdb"
    On Error Resume Next
    Set db = DAO.OpenDatabase(dbPath)
    'Set rs = db.OpenRecordset("customers")

    Debug.Print Err.Number, Err.Description

End Sub
Run Code Online (Sandbox Code Playgroud)

3343无法识别的数据库格式'C:\ Users\e574651.GLOBAL\Documents\Northwind 2007.accdb'.

我可以使用ADO整天访问(没有双关语)这个数据库,我怀疑问题在于以下ADO语句:

ADOConn.Provider ="Microsoft.ACE.OLEDB.12.0"

如何使用DAO提供此功能?

我在VBA首选项中包含了对DAO 3.6库的引用.我已经包含了其他Microsoft 12.0库引用,所以我要么破坏了某些东西,要么省略了一些东西.

任何帮助将不胜感激.

谢谢!

Fio*_*ala 5

最新的DAO库格式如下:

Microsoft Office x.x Access Database Engine Object Library
Run Code Online (Sandbox Code Playgroud)

所以摆脱3.6引用并使用更新的库.然后,一个例子:

Sub XLAccess()
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim sDb As String
Dim sSQL As String
Dim qdf As QueryDef

    sDb = "Z:\Docs\Test.accdb"

    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(sDb)

    ''A stored query would be better
    sSQL = "Parameters p1 Text, p2 Datetime; " _
    & "INSERT INTO Table1 (AText,ADate) Values ([p1],[p2])"

    Set qdf = db.CreateQueryDef("", sSQL)

    qdf.Parameters!p1 = "ABC"
    qdf.Parameters!p2 = #1/17/2013#
    qdf.Execute dbFailOnError
    Debug.Print qdf.RecordsAffected
End Sub
Run Code Online (Sandbox Code Playgroud)