在Office 2013 64位上使用OLEDB连接

时间:2014-10-22 19:45:12

标签: excel vba excel-vba ms-access

我知道有很多线程与此相关。然而,他们似乎都没有解决我的问题。我在这里记下我的确切问题。有人可以帮我这个吗?

环境 - Windows 7 64位,Office 2013 64位

自动化 - Excel中VBA中的宏,它将使用下面提到的驱动程序将某些数据导入.mdb文件

问题 - 运行时错误3706,无法找到提供程序。它可能没有正确安装

尝试1 - 我在线检查了错误代码,大多数线程都指出了语法错误和连接方式。我尝试实施建议,但没有影响

尝试2 - 然后我发现这是因为它试图使用64位写入的旧驱动程序。因此,我尝试安装最受欢迎的建议 - http://www.microsoft.com/en-us/download/details.aspx?id=13255 这也没有用

代码 -

database_path = Application.ActiveWorkbook.path & "\" & "mydb.mdb"
Set cn = CreateObject("ADODB.Connection")
With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & database_path
End With
cn.Open

任何解决方案都是受欢迎的,只要它适用于所有 - 办公室2007年,2010年和2013年。

谢谢!

1 个答案:

答案 0 :(得分:4)

如果您从问题中的链接下载并安装了驱动程序,您会注意到"安装说明"有一个名为"要使用此下载的部分:"。该部分下的#2声明您需要将ConnectionString属性的Provider参数更改为“Microsoft.ACE.OLEDB.12.0”而不是"Microsoft.Jet.OLEDB.4.0"

我使用Excel 32位和64位的替换参数运行修改后的代码并且它可以工作:

Set cn = CreateObject("ADODB.Connection")
    With cn
       .Provider = "Microsoft.ACE.OLEDB.12.0"
       .ConnectionString = "Data Source=" & database_path & ";"

    cn.Open
End With

您下载的ACE驱动程序可根据本文在Office 2007,2010和2013中使用:

Difference between Microsoft.Jet.OleDb and Microsoft.Ace.OleDb