64位Excel VBA使用Oracle InstantClient连接Oracle数据库问题求助
64位Excel VBA连接Oracle数据库解决方案
错误原因说明
- 运行时错误3706:未安装对应版本的Oracle OLEDB Provider组件,或连接串中填写的Provider/Driver名称与本地实际安装的驱动名称不匹配
- 运行时错误-2147217805 (80040e73):原有连接串错误将
SERVICE_NAME配置为SID,导致数据库识别连接信息失败
可用连接串配置
优先推荐使用已验证可用的Oracle ODBC驱动连接,无需额外安装组件,稳定性更高。使用前需先打开64位ODBC数据源管理器,在「驱动程序」标签页确认Oracle驱动的准确名称,一般格式为Oracle in <你的InstantClient安装目录名>。
方式一:使用Oracle ODBC驱动连接
基于TNS名称的连接串(依赖tnsnames.ora配置)
Database_Connection_String = "Driver={Oracle in Oracle ODBC};Dbq=DATAVIEW;Uid=MyName;Pwd=MyPass;"
注意:将大括号内的驱动名替换为你本地ODBC管理器中显示的实际驱动名称
独立连接串(无需tnsnames.ora配置)
Database_Connection_String = "Driver={Oracle in Oracle ODBC};Dbq=//10.x.x.x:1521/MyStats;Uid=MyName;Pwd=MyPass;"
方式二:使用Oracle OLEDB Provider连接
使用前需额外安装与InstantClient v21.3版本匹配的Oracle OLEDB组件(属于ODAC安装包的一部分)。
基于TNS名称的连接串(依赖tnsnames.ora配置)
Database_Connection_String = "Provider=OraOLEDB.Oracle;Data Source=DATAVIEW;User Id=MyName;Password=MyPass;"
独立连接串(无需tnsnames.ora配置)
Database_Connection_String = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.x.x.x)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=MyStats)));User Id=MyName;Password=MyPass;"
注意事项
- 所有系统环境变量修改完成后,必须重启Excel才能生效
- 禁止使用微软官方废弃的
Microsoft ODBC for Oracle驱动,该驱动仅支持32位环境
内容的提问来源于stack exchange,提问作者Fereidoun Sadr
相关产品推荐
相关产品推荐

