使用64位Excel连接到32位Oracle客户端

我正尝试使用VBA中的连接string将我的Excel连接到Oracle:

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

我得到这个错误:

 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企业版,Service Pack 1,64位
  • Oracle客户端是11.2.0 32位(我认为)
  • Oracle服务器是Oracle数据库11g企业版版本11.2.0.3.0 – 64位生产

现在…我已经search了networking,不知道问题是什么,但我最好的猜测是有一些与我使用的驱动程序的32位与64位冲突。 我试图了解在我公司的IT部门为我尝试安装东西之前,应该采取什么样的方式。 如果MS Office是Oracle客户端必须是64位? 或者我只需要64位Oracle数据访问组件? 我已经尝试了一堆不成功的连接string,包括使用MSDAORA而不是OraOLEDB.Oracle …

是的,当您使用64位Excel时,还必须安装64位Oracle Client和64位OLE DB提供程序。

来自Microsoft(即MSDAORA )的OLE DB提供程序不适用于64位。 它只存在于32位,已经被弃用已经很长时间了。

我不知道你是否需要你的32位Oracle客户端,所以也许你不能简单地从你的电脑中删除它。 这里是一个说明如何在一台机器上安装32位和64位Oracle客户端。 安装Oracle客户端x86和x64

我也有同样的问题,解决办法是设置Excel驱动程序的Excel会话到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" 

oracle服务器不重要。

尝试打开一个dos窗口,然后inputc:\ tnsping你的服务器名称

看向安装问题。