Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 尝试使用DAO从外部Access(Outlook/Excel)连接到有效的数据库会生成3343无法识别的数据库格式错误_Vba_Dao - Fatal编程技术网

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

Vba 尝试使用DAO从外部Access(Outlook/Excel)连接到有效的数据库会生成3343无法识别的数据库格式错误,vba,dao,Vba,Dao,谢谢你的网站。好消息 简而言之,我试图执行Outlook(2007)中的以下代码,尽管它在Excel中也失败了。作品伟大的内部访问 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

谢谢你的网站。好消息

简而言之,我试图执行Outlook(2007)中的以下代码,尽管它在Excel中也失败了。作品伟大的内部访问

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
3343无法识别的数据库格式“C:\Users\e574651.GLOBAL\Documents\Northwind 2007.accdb”。

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

ADOConn.Provider=“Microsoft.ACE.OLEDB.12.0”

如何使用DAO提供此功能

我在VBA首选项中包含了对DAO 3.6库的引用。我已经包括了其他的Microsoft12.0库引用,所以我要么删除了一些内容,要么省略了一些内容

任何帮助都将不胜感激


谢谢

最新的DAO库的格式如下:

Microsoft Office x.x Access Database Engine Object Library
因此,摆脱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

在参考资料上使用更新的版本或最新的access数据库

例如:在Visual Basic窗口内=转到工具>参考>Microsoft Office 14.0 Access数据库引擎对象库

然后使用以下命令打开数据库:

Dim database_data As DAO.Database
Dim rsData As DAO.Recordset
Dim field_index As Integer

Set database_data = DAO.OpenDatabase("demo1.accdb")

有时,也可能需要键入数据库文件的完整路径,例如“C:\User\Documents\projects\demo1.accdb”

Microsoft Office 3.6 Access数据库引擎对象库更改为
Microsoft Office 12.0 Access数据库引擎对象
为我修复了它。谢谢