连接64位Excel和32位Oracle客户端

5

我正在尝试使用以下VBA连接字符串将Excel连接到Oracle:

dim cn As New ADODB.Connection
cn.Open "Provider=OraOLEDB.Oracle;Data Source=source;User Id=userid;Password=pwd;"

I'm getting this error:

Run-time error '3706':
Provider cannot be found. It may not be properly installed.

相关参考资料:

Microsoft ActiveX Data Objects 6.1 Library
OraOLEDB 1.0 Type Library
  • Excel是MS Office Professional Plus 2010 64位版本
  • Windows为7 Enterprise,服务包1,64位
  • Oracle客户端为11.2.0 32位(我想)
  • Oracle服务器为Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64位 Production版本

现在...我已经搜索了互联网,但是找不出问题所在,但我最好的猜测是我使用的驱动程序存在一些32位和64位之间的冲突。在让我的公司IT部门帮我安装东西之前,我正在尝试了解该采取哪种路径。如果MS Office是64位的话,Oracle客户端是否必须是64位的?还是我只需要64位的Oracle数据访问组件?我已经尝试了各种连接字符串,但无法成功,包括使用MSDAORA而不是OraOLEDB.Oracle...


2
如果您正在使用64位Excel(除非您真的需要64位,否则应该使用32位Office版本),那么您还需要64位Oracle客户端和64位驱动程序。 - Tim Williams
谢谢,我也有这样的感觉,但在继续之前我想确认一下。他们在过去几个月里升级了我们到64位的Office,没有一个好的理由。也许他们可以把我调回去 - 虽然,如果我想让其他人能够使用我正在编写的宏,我想他们也必须被回滚... - Paul Exter
1
微软关于哪个版本使用的指南:https://support.office.com/zh-cn/article/%E9%80%89%E6%8B%A9-office-%E7%9A%84-32-%E4%BD%8D%E6%88%96-64-%E4%BD%8D%E7%89%88%E6%9C%AC-2dee7807-8f95-4d0c-b5fe-6c6f49b8d261?ui=zh-CN&rs=zh-CN&ad=CN 使用64位Office会给你带来更多的兼容性问题,如果你不是真的需要它,最好还是留在32位上。 - Tim Williams
3个回答

3
是的,当您使用64位的Excel时,您必须安装64位的Oracle客户端和64位的OLE DB提供程序。
来自Microsoft的OLE DB提供程序(即MSDAORA)不存在64位版本。它只存在32位版本,并且已经被弃用很长时间了。
我不知道您是否需要32位Oracle客户端做其他事情,因此您可能无法从计算机中删除它。以下是一份指南,说明如何在一台机器上安装32位和64位Oracle客户端:Install Oracle Client x86 and x64

谢谢,你再次确认了Tim上面的评论。我与我的IT部门讨论了最佳前进路径,他们建议我远程连接到一个终端,在那里Excel和Oracle都是32位的,这是我希望自己想到的。我这样做了,我的宏在那里运行得很好。 - Paul Exter

1
我也遇到了同样的问题,解决方法是将excel会话的oracle驱动程序设置为32位驱动程序并启动excel。
我使用以下批处理文件打开excel,并且连接到oracle没有任何问题:
Set Temp=C:\Temp
Set TMP=C:\Temp
Set Oracle_Home= #YourDriveLetterhere - >M:\ORA12C\product\12.1.0\client_1
Set Path=C:\Windows;C:\Windows\System32;M:\ORA12C\product\12.1.0\client_1\bin;M:\ORA12C\product\12.1.0\client_1\nls\mesg;M:\ORA12C\product\12.1.0\client_1\network\admin;

START "" "C:\MacroFileNameWhichConnectsToOracle.xlsm"

-2

Oracle服务器并不重要。

尝试打开一个DOS窗口,然后输入c:\ tnsping yourservername

关注安装问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接