2013-03-16 77 views
3

感謝您的站點。精彩的信息。嘗試使用DAO連接到外部Access(Outlook/Excel)的有效數據庫時,會生成3343個無法識別的數據庫格式錯誤

簡而言之,我試圖從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:\用戶\ e574651.GLOBAL \文件\羅斯文2007.accdb'。

我可以訪問(沒有雙關語意)這個數據庫整天使用ADO,我懷疑問題出在下面的ADO聲明:

ADOConn.Provider =「Microsoft.ACE.OLEDB.12.0」

如何使用DAO提供此功能?

我在VBA首選項中包含了對DAO 3.6庫的引用。我已經包含了其他微軟12.0庫引用,所以我要麼破壞某些東西,要麼遺漏了一些東西。

任何援助將不勝感激。

謝謝!

回答

5

最新的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 
+0

從「Microsoft Office 3.6 Access數據庫引擎對象庫」更改爲「Microsoft Office 12.0 Access數據庫引擎對象」爲我解決了這個問題。謝謝! – 2015-06-12 13:08:34

0

您參考使用更最新版本還是最新的Access數據庫

例如:在內部的Visual基礎窗口= 轉到工具>參考>的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」

相關問題