Excel VBA宏执行报错3706:创建ADODB.Connection时找不到提供程序
搞定ADODB运行时错误'3706':找不到提供程序的实用方案
嘿,这个ADODB的3706错误我碰过好多次了,本质就是你的VBA代码找不到对应的数据库驱动(OLE DB Provider),可能是驱动没装、位数不兼容、组件没注册,或者连接字符串写错了。下面一步步来排查解决:
1. 先检查你的连接字符串!(90%的新手坑在这里)
你只贴了Set connection = CreateObject("ADODB.Connection"),但真正打开连接的connection.Open语句里的Provider参数才是关键,必须和你安装的驱动完全匹配。举几个正确的例子:
- 连接Access 2007及以后版本:用
Microsoft.ACE.OLEDB.12.0 - 连接旧版Access(.mdb):用
Microsoft.Jet.OLEDB.4.0(注意这个只有32位) - 连接SQL Server:可以用
SQLOLEDB或者新版的MSOLEDBSQL
正确的代码示例:
Set connection = CreateObject("ADODB.Connection") ' 连接Access的示例 connection.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\你的数据库文件.accdb;"
要是Provider名称写错了,肯定直接触发3706错误,先把这个核对好!
2. 确认对应的OLE DB驱动已经安装
- 如果你用的是
Microsoft.ACE.OLEDB.12.0或更高版本,需要安装Microsoft Access Database Engine:- 32位Office就装32位的驱动,64位Office装64位的,别搞混!
- 要是已经装了32位Office,硬装64位驱动会冲突,这时候可以用被动安装命令(比如64位安装包:
AccessDatabaseEngine_X64.exe /passive)来绕过冲突
- 要是用的是旧版
Microsoft.Jet.OLEDB.4.0,这个驱动只有32位,如果你是64位系统/Office,直接找不到,要么换成ACE驱动,要么换成32位Office(优先换驱动)
3. 重点!检查Office/Excel的位数和驱动位数是否匹配
这是最容易踩的坑!
- 打开Excel,点「文件」→「账户」→「关于Excel」,看清楚是32位还是64位
- 必须保证你装的OLE DB驱动位数和Excel的位数完全一致:32位配32位,64位配64位
- 要是不匹配,要么卸载现有驱动装对应位数的,要么换Office位数(换驱动成本更低)
4. 手动注册ADODB组件(如果组件未注册)
有时候系统里的ADODB组件没注册成功,导致找不到:
- 按Win+R,输入
cmd,右键选「以管理员身份运行」 - 根据你的位数执行命令:
- 32位系统/32位Office:
regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll" - 64位系统/64位Office:
regsvr32 "C:\Program Files (x86)\Common Files\System\ado\msado15.dll"
- 32位系统/32位Office:
- 执行后会弹出注册成功的提示,重启Excel再测试
5. 排查权限问题
有时候Excel没有足够权限读取驱动组件:
- 右键Excel图标,选「以管理员身份运行」,然后打开你的宏工作表试试
- 如果这样能解决,就设置Excel默认以管理员身份运行:右键Excel→属性→兼容性→勾选「以管理员身份运行此程序」
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

