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

时间:2015-03-03 18:00:27

标签: excel oracle vba oledb ado

我正在尝试使用VBA中的此连接字符串将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 Enterprise,Service Pack 1,64位
  • Oracle客户端是11.2.0 32位(我认为)
  • Oracle服务器是Oracle Database 11g企业版11.2.0.3.0版 - 64位生产

现在......我已经在网上搜索并且无法弄清楚问题是什么,但我最好的猜测是我正在使用的驱动程序有32位与64位冲突。在我让公司的IT部门尝试为我安装东西之前,我正试图了解我应该采取什么样的方法。如果MS Office是Oracle客户端必须是64位吗?或者我只需要64位Oracle数据访问组件?我尝试了一堆不同的连接字符串但没有成功,包括使用MSDAORA代替OraOLEDB.Oracle ......

3 个答案:

答案 0 :(得分:3)

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

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

我不知道你是否需要32位Oracle客户端,所以也许你不能简单地从你的PC上删除它。以下是如何在一台计算机上安装32位和64位Oracle客户端的说明。 Install Oracle Client x86 and x64

答案 1 :(得分:0)

我也有同样的问题,解决方案是将excel会话的oracle驱动程序设置为32位驱动程序并启动excel。

我使用以下Bat文件打开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 :(得分:-2)

oracle服务器不重要。

尝试打开dos窗口并输入c:\ tnsping yourservername

了解安装问题。