64位Excel通过VBA连接MySQL失败问题求助
问题:64位Excel搭配MySQL ODBC驱动时VBA连接报错
环境与现象
- 原环境:Windows 10 + 32位ODBC驱动 + 32位Excel
- 当前环境:Windows 11 + 64位Excel + 64位MySQL ODBC驱动
- 异常表现:Excel内置查询工具可正常连接数据库,但运行以下VBA代码时报错
- 错误信息:
Run-time error '-2147467259 (80004005)':
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
测试VBA代码
Public Function OpenConnection() As ADODB.Connection Const location = "localhost" Const user = "swm" Const password = "xxxxxxx" Const database = "swm" Const mysql_driver = "MySQL ODBC 8.0 ANSI Driver" ' Build the connection string Dim s As String s = "Driver={" & mysql_driver & "};Server=" & _ location & ";Database=" & _ database & ";UID=" & _ user & ";PWD=" & password Debug.Print s ' Open connection Set OpenConnection = New ADODB.Connection OpenConnection.Open s End Function
解决方法
确认驱动名称完全匹配
- 按Win+R,输入
odbcad32.exe打开64位ODBC数据源管理器(不要打开C:\Windows\SysWOW64\odbcad32.exe,这是32位版本) - 切换到「驱动程序」标签,找到已安装的MySQL ODBC驱动的准确名称(常见为
MySQL ODBC 8.0 Unicode Driver,而非代码中的ANSI版本) - 将VBA代码中
mysql_driver常量的值替换为实际驱动名称
- 按Win+R,输入
检查VBA项目的位数设置
- 打开Excel,按Alt+F11进入VBA编辑器
- 点击「工具」>「引用」,确保勾选的ADODB引用为64位版本(如
Microsoft ActiveX Data Objects 6.1 Library或更高) - 右键VBA项目,选择「属性」>「编译」,确认「平台」设置为「x64」(匹配64位Excel)
调整连接字符串格式
尝试添加Provider前缀指定ODBC驱动管理器,修改连接字符串如下:s = "Provider=MSDASQL;Driver={" & mysql_driver & "};Server=" & location & ";Database=" & database & ";UID=" & user & ";PWD=" & password重新安装驱动
卸载现有64位MySQL ODBC驱动,下载对应版本的官方安装包,右键以管理员身份运行安装,确保安装过程无异常。
内容的提问来源于stack exchange,提问作者Marc M.
相关产品推荐
相关产品推荐

