我正在运行用于通过32位Excel连接到Oracle数据库时使用的VBA脚本,但是现在我正在使用64位Excel。
VBA代码: 设置cn1 = New ADODB.Connection 设置rs1 =新的ADODB.Recordset cn1.ConnectionString =“驱动程序= {Microsoft ODBC for Oracle};服务器= BR1P1; Uid = BR1USER; Pwd = myPass” cn1。打开 rs1.Open Query,cn1
当我执行“ cn1.open”时,出现此错误: “运行时错误'-214746 ... [Microsoft] [ODBC驱动程序管理器]找不到数据源名称,未指定默认驱动程序”
然后,我尝试解决添加新数据源的问题: ODBC数据源管理员(64位)>文件DSN>单击添加...>从列表中选择:Oracle em OraClient11g_home1(“ Oracle em”表示“ Oracle for”,我的操作系统以葡萄牙语表示)> Next>浏览至文件:“ C:\ Windows \ System32 \ odbcad32.exe”>下一步>完成
这样做,系统将为我提供驱动程序名称:“ Oracle em OracleClient11g_home1”
之后,将提示您输入服务名称,用户名和密码。我根据我的TNSNAMES.ORA通知服务器名称
回到VBA,我根据驱动程序名称更改了代码: cn1.ConnectionString =“驱动程序= {Oracle em OracleClient11g_home1}”
现在在VBA中执行“ cn1.Open”时,我收到此新错误消息:
“运行时错误'-214746 ... [Oracle] [ODBC] ORA-12560:TNS:协议适配器错误”
我的TNSNAMES.ORA文件是这样的: BR1P1 =(描述=(地址列表=(地址=(协议= TCP)(主机= myhost.com)(端口= 1575)))(连接数据=(服务器=专用)(服务名称= BR1P1)))
好吧,我只是坚持这一点。请对此表示感谢。 我将MS Office更改为64位版本后,真是很痛苦。
答案 0 :(得分:0)
Microsoft ODBC for Oracle
仅适用于32位,因此您不能将其用于64位Excel。
如果要使用Oracle的64位ODBC驱动程序,则必须安装它。从64-bit Oracle Data Access Components (ODAC) Downloads
下载驱动程序Oracle ODBC驱动程序的ConnectionString格式与Microsoft ODBC驱动程序的格式不同,请参见
因此,对于Oracle,您的ConnectionString
Driver={Microsoft ODBC for Oracle};Server=BR1P1;Uid=BR1USER;Pwd=myPass
将是
Driver={Oracle em OracleClient11g_home1};DBQ=BR1P1;Uid=BR1USER;Pwd=myPass