运行时错误使用excel vba将数据从excel 2010导出到Access表2010时无法识别数据库

时间:2012-05-16 14:37:06

标签: excel vba excel-vba excel-2010 ms-access-2010

我在Access 2010数据库中有一个表,其列名与excel表中的列名相同。我必须删除Access表数据内容,然后从我的宏中将excelbed excel 2010表格中的数据泵入其中。现在我试图查看/测试是否可以将我的Excel数据泵入Access中的空表。一旦我开始工作,我就可以在转储excel数据之前“删除内容”。

这是我的excel vba宏代码:

Sub ADOFromExcelToAccess()
'exports data from the active worksheet to a table in an Access database
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
    "Data Source=C:\Users\shress2\Documents\TSS_Certification\TSS_Certification.accdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "t_certification_051512", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 2 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
    With rs
        .AddNew ' create a new record
        ' add values to each field in the record
        .Fields("Role") = Range("A" & r).Value
        .Fields("Geo Rank") = Range("B" & r).Value
        .Fields("Geo") = Range("C" & r).Value
        ' add more fields if necessary...
        .Update ' stores the new record
    End With
    r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

End Sub

我添加了工具 - >引用并选择Microsoft ActiveX Data Objects 6.0对象库。

我得到运行时错误'-2147467259(80004005)': 无法识别的数据库格式'C:\ Users \ shress2 \ Documents \ TSS_Certification \ TSS_Certification.accdb

有什么原因吗?我该如何解决?感谢。

1 个答案:

答案 0 :(得分:3)

您正在连接到.accdb数据库文件。它是Access 2007/2010格式 已为Access 2003时代的mdb文件构建了Microsoft.Jet.OLEDB.4.0提供程序 我认为您无法与该提供商建立联系(它无法识别文件格式)。

尝试更改连接字符串以使用

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\shress2\Documents\TSS_Certification\TSS_Certification.accdb;"