You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 23:54:01