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

标签 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 是 64 位,Oracle 客户端是否必须是 64 位?或者我只需要 64 位 Oracle 数据访问组件?我尝试了很多不同的连接字符串,但没有成功,包括使用 MSDAORA 而不是 OraOLEDB.Oracle...

最佳答案

是的,当您使用 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

关于excel - 使用 64 位 Excel 连接到 32 位 Oracle 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28838695/

相关文章:

sql-server - 如何将 SQL Server 存储过程结果返回到 Excel

oracle - 通过 PL/SQL 访问 HTTPS Web 服务的问题

vba - 用于删除 Word 文档中所有重复文本实例的宏

vba - Dim As New vs Dim/Set 有什么区别

excel - 使用 YouTube API 的 HTTP POST 请求的请求正文中包含什么内容?

function - Excel VBA UDF 格式 - 在计算前更改参数值

c# - 为什么在执行 ASP .NET Excel 互操作时出现内存不足错误?

sql - 计算每个客户订单之间的平均时间

oracle - 为什么 Oracle 接受字符串值前的加号 (+)?

vba - VBA-Countif错误 '438'