首页 > 解决方案 > Excel 使用 VBA 连接到 Oracle 12c

问题描述

尝试使用 Excel VBA 连接到 64 位 Oracle Database 12c 企业版。

客户端计算机安装了以下 32 位驱动程序:

并安装了以下 64 位驱动程序:

该文件有以下参考:

我尝试了多种格式的连接字符串,但没有任何效果。

'This gave the error "[Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error"
cs = "Driver={Oracle in OraClient12Home1}; UID=myuid; PWD=mypwd; SERVER=myhostname/myservicename;"

'This gave the error "[Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified"
cs = "Driver={Oracle in OraClient12Home1}; UID=myuid; PWD=mypwd; SERVER=myhostname; DBQ=myservicename;"

'This gave the error "[Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error"
cs = "Driver={Oracle in OraClient12Home1}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostname)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myservicename)));UID=myuid; PWD=mypwd;"

'This would crash Excel
cs = "Driver={Oracle in OraClient11g_home1}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostname)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myservicename)));UID=myuid; PWD=mypwd;"

我还尝试了在连接字符串中使用以下驱动程序的变体

标签: excelvbaoracledatabase-connectionoracle12c

解决方案


感谢大家的帮助,并对延迟的响应表示抱歉(我正在扑灭多个与工作相关的“火灾”)。

无论如何......我找到了一个适合我的解决方案。我认为问题不在于同一台机器上有多个驱动程序,因为我现在能够连接而无需更改任何东西,除了我使用的连接字符串方法。

虽然我仍然不确定为什么我的连接字符串的“驱动程序”方法不起作用,但我能够使用基于“提供者”的连接字符串并且有效。

'Using OraOLEDB.Oracle.1.
cs = "Provider=OraOLEDB.Oracle.1;User ID=myuid;Password=mypwd;Data Source=myhostname/myservicename;"

'Using OraOLEDB.Oracle.
cs = "Provider=OraOLEDB.Oracle;User ID=myuid;Password=mypwd;Data Source=myhostname/myservicename;"

'Using OraOLEDB.Oracle as a TNS-less connection string.
cs = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostname)(PORT=myport)))(CONNECT_DATA=(SERVICE_NAME=myservicename)(SERVER=DEDICATED)));User Id=myuid;Password=mypwd;"

'Using variation of the above with a port included.
cs = "Provider=OraOLEDB.Oracle.1;User ID=myuid;Password=mypwd;Data Source=myhostname:myport/myservicename;"

推荐阅读