【发布时间】:2017-02-08 07:10:18
【问题描述】:
我正在尝试通过 Excel 连接到 Oracle 数据库。我已经在我的机器上安装了来自 Oracle 的 Instant Client,但是当我运行此代码时收到此消息:
Sub testing()
Dim myConn As Connection: Set myConn = New Connection
Dim mySet As Recordset: Set mySet = New Recordset
Dim CONNSTRING As String
CONNSTRING = "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=xxxxxx.xxx.xxxxxxxxxxx.com)(PORT=1524))" & _
"(CONNECT_DATA=(SERVICE_NAME=dev))); uid=xxxxxxx; pwd=xxxxxxxxxxx;"
myConn.Open CONNSTRING
mySet.Open "SELECT * FROM apps.ap_invoice_lines_interface", myConn, adOpenStatic, adLockBatchOptimistic, adCmdTable
Sheet1.Range("A1").CopyFromRecordset mySet
mySet.Close
myConn.Close
End Sub
我收到的信息是
未找到 Oracle(tm) 客户端和网络组件。这些组件由 Oracle Corporation 提供,是 Oracle 7.3 版(或更高版本)客户端软件安装的一部分。在安装这些组件之前,您将无法使用此驱动程序
【问题讨论】:
-
愚蠢的问题,但是您在安装所需的 Oracle 客户端后是否重新启动了计算机?问是因为我有这个问题,这就是我解决它的方法。但是,在您解决了问题之后,您可能会在
SELECT之后遇到conn的问题。里面应该是myConn -
我还没有重新启动,非常感谢您的收获!我将其更改为 myConn
-
您的 excel 是 32 位还是 64 位?您安装的 Oracle 客户端是 32 位还是 64 位?它们必须匹配,并且出于这个原因,我已经看到了这个错误。
-
我有 32 位 Excel,但我承认确实安装了 64 位,因为我有 64 位操作系统。我也会得到 32 位的,然后告诉你
-
@EdStevens -- 我真的鼓励您将其发布为正式答案。我认为这是一个非常常见的问题,因为大多数 Office 实例都是 32 位的。我们在 ODBC 设置中经常遇到同样的问题。如果这就是解决方案更明显的话,这可能会帮助很多未来的潜伏者。
标签: excel vba oracle oracleclient