【问题标题】:Working with OLEDB connection on Office 2013 64 bit在 Office 2013 64 位上使用 OLEDB 连接
【发布时间】:2014-12-18 09:31:45
【问题描述】:

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

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

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

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

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

尝试 2 - 然后我发现这是因为它试图使用 64 位 office 的旧驱动程序。因此,我尝试安装最流行的建议 - 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

欢迎任何解决方案,只要它适用于所有 - office 2007、2010 和 2013。

谢谢!

【问题讨论】:

  • 如果遇到困难,我不介意让 office 2010 提供 office 2010 32 位和 office 2013 64 位可以共存。他们可以吗?

标签: vba excel ms-access


【解决方案1】:

如果您从问题中的链接下载并安装了驱动程序,您会注意到“安装说明”中有一个名为“使用此下载:”的部分。该部分下的 #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

【讨论】:

  • 我明白了。让我试试这个然后回来。非常感谢!
  • 这工作得很好。非常感谢!我只有一个小问题。我不记得是否安装了该引擎的 32 位或 64 位版本。如果我有 64 位操作系统和 64 位 Office,您能确认安装哪一个吗?我的猜测是 64 位。再次感谢!
  • 由于您有 64 位操作系统,您可以安装 32 位或 64 位版本的驱动程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
相关资源
最近更新 更多