连接DAO Access时出现错误429

时间:2015-02-07 19:19:23

标签: excel vba excel-vba dao

我有以下用于连接MDB数据库的VBA代码但是当我尝试连接DAO.OpenDatabase(DbFile)时出现429错误

之前我没有收到此错误,但现在它正在发生。在我的另一台计算机上,此连接正常。

我检查了MDB的路径,这是正确的。

我使用的参考文献是:
- Visual Basic for Applications
- Microsoft Excel 15.0对象库
- OLE自动化
- Microsoft Office 15.0对象库
- Microsoft DAO 3.6对象库

我正在使用Excel 2013(在其他计算机上是Excel 2010)但正如我所说它在2013年之前正在使用。

有谁知道如何解决这个问题呢?

Private Sub IniciaDB()

Dim rs As Recordset
Dim fld As Variant
Dim DbFile as String

DbFile = "D:\Documentos\PMbox\PPMdatabase2.MDB"

On Error Resume Next
Set OpenConn = DAO.OpenDatabase(DbFile)
If Err.Number = 3024 Then MsgBox "Check connection string in the VBA StaticClass object", vbOKOnly

Set ObjAccess = CreateObject("Access.Application")
ObjAccess.Visible = False
ObjAccess.OpenCurrentDatabase (DbFile)

'runSQL ("INSERT INTO tabela_teste VALUES ('My name', 34)")
Set rs = runCursorSQL("SELECT * FROM tabela_teste")

Do While Not rs.EOF
    For Each fld In rs.Fields
        Debug.Print fld.Value & ";";
    Next
    rs.MoveNext
Loop

closeResources

End Sub

4 个答案:

答案 0 :(得分:1)

我在相当长的一段时间里一直在努力解决同样的问题 事实证明我的Office 64位,因此引用的 Microsoft DAO 3.6对象库无法正常工作。

使用引用,结果是使用 Microsoft Office 15.0 Access数据库引擎对象(ACEDAO.DLL)而不是 DAO360 解决了这个问题。

链接到类似的答案,如果我早点发现Writing Excel VBA to receive data from Access

,就会解决我的问题

答案 1 :(得分:1)

当我遇到错误429时,我正在构建MDB到ACCDB转换器。这是下载的链接,解决了我的问题。

http://www.microsoft.com/en-ca/download/details.aspx?id=13255

引用: “此下载将安装一组组件,可用于促进2010 Microsoft Office System文件和非Microsoft Office应用程序之间的数据传输。”

答案 2 :(得分:0)

嗯,找到的解决方案是DAO引用丢失,它在我的计算机中,但引用指示程序文件,DAO实际上在程序文件(x86)

答案 3 :(得分:0)

我花了一个晚上解决这个问题,直到我最终通过卸载64位版本的MS Office和MS Access 2010 Redistributable来修复它,然后重新安装它们的32位版本。

在我看来,64位版本在使用DAO时存在兼容性问题。

我描述了我遇到的整个问题in this blog post