Excel VBA运行错误3706:MSDAORA提供程序找不到 Oracle连接失败如何解决?
错误触发原因
- 你使用的
MSDAORA是微软早年推出的Oracle连接驱动,目前已经彻底停止维护,仅提供32位版本。如果你安装的是64位版本的Office/Excel,系统无法加载32位的MSDAORA驱动,就会直接报找不到驱动的错误。 - 从Windows 8、Windows Server 2012开始,系统默认不再预装
MSDAORA驱动,即使是32位Office也会因为系统缺少对应组件触发报错。 MSDAORA不支持11g及以上版本的Oracle数据库,即使驱动存在,连接高版本Oracle实例也会出现兼容性问题。- 已安装的Oracle客户端位数和Office位数不匹配,也会导致驱动加载失败。
解决方案
- 优先替换为Oracle官方提供的OraOLEDB驱动:首先确认你的Office位数,安装对应位数的Oracle客户端(安装时勾选OraOLEDB相关组件),然后将连接字符串中的Provider参数替换为
OraOLEDB.Oracle即可,修改后的连接字符串参考:"Provider=OraOLEDB.Oracle; Data Source=Garcia; User ID=RMS; Password=XXX" - 如果你必须保留
MSDAORA驱动的使用逻辑,需要将Office降级为32位版本,同时安装32位的Oracle 10g及以下版本的客户端,手动补全MSDAORA相关组件。 - 建议调整你的代码逻辑,先打开数据库连接再执行查询操作,避免额外的连接异常,修正后的代码参考:
Sub testDB() Dim ExcelDB As New ADODB.Connection Dim ExcelRS As New ADODB.Recordset Dim ExcelSQL As String ExcelSQL = "SELECT item from item_master" ' 先打开连接 ExcelDB.ConnectionString = "Provider=OraOLEDB.Oracle; Data Source=Garcia; User ID=RMS; Password=XXX" ExcelDB.Open ' 执行查询 ExcelRS.Open ExcelSQL, ExcelDB, 2, 4 ' 此处添加你的数据处理逻辑 ' 用完关闭资源 ExcelRS.Close ExcelDB.Close Set ExcelRS = Nothing Set ExcelDB = Nothing End Sub
内容的提问来源于stack exchange,提问作者Raul Acevedo
相关产品推荐
相关产品推荐

