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

Connecting to 32 bit Oracle client with 64 bit Excel

我正在尝试使用 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

现在...我已经在网上搜索过但无法弄清楚问题出在哪里,但我最好的猜测是我正在使用的驱动程序存在一些 32 位与 64 位冲突。在我让我公司的 IT 部门尝试为我安装东西之前,我想了解我应该走哪条路。如果 MS Office 是,Oracle 客户端是否必须是 64 位的?还是我只需要 64 位 Oracle 数据访问组件?我尝试了一堆不同的连接字符串但没有成功,包括使用 MSDAORA 而不是 OraOLEDB.Oracle...

oracle 服务器无关紧要。

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

查看安装问题。

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

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

我不知道您是否需要 32 位 Oracle Client 来做其他事情,所以也许您不能简单地将它从您的 PC 中删除。下面是如何在一台机器上同时安装 32 位和 64 位 Oracle Client 的说明。 Install Oracle Client x86 and x64

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

我使用以下 Bat 文件打开 excel,它连接到 oracle 没有任何问题:

#
Set Temp=C:\Temp
Set TMP=C:\Temp
Set Oracle_Home= #YourDriveLetterhere - >M:\ORA12C\product.1.0\client_1
Set Path=C:\Windows;C:\Windows\System32;M:\ORA12C\product.1.0\client_1\bin;M:\ORA12C\product.1.0\client_1\nls\mesg;M:\ORA12C\product.1.0\client_1\network\admin;

START "" "C:\MacroFileNameWhichConnectsToOracle.xlsm"
#