Windows10下Excel2016 VBA通过ADODB连接MySQL8.0报错求助
解决Excel VBA连接MySQL时的ODBC驱动找不到问题
问题描述
系统环境:Windows10、Excel2016、MySQL8.0,已安装64位MySQL ODBC 8.0 ANSI/Unicode驱动且ODBC数据源测试成功,但VBA执行ADODB连接时报错:
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified,运行时错误代码-2147467259 (80004005)。
用户代码片段:
Public oSConn As New ADODB.Connection Public Function GetSQLConnectionString() As String GetSQLConnectionString = "Driver ={MYSQL ODBC 8.0 Unicode Driver};Server=localhost;Port=3306;Database=hstest;Uid=xxxx;Pwd=xxxx;" End Function Sub UpLoadData() oSConn.Open GetSQLConnectionString() '... End Sub
解决方案
1. 检查Excel与ODBC驱动的位数匹配
Excel2016分32位和64位版本,若你安装的是64位ODBC驱动,但Excel是32位,驱动管理器会找不到对应驱动。
- 验证Excel位数:打开Excel →
文件→账户→关于Excel,查看版本标注。 - 解决:若Excel是32位,卸载64位ODBC驱动,安装32位MySQL ODBC 8.0驱动;若Excel是64位,保持64位驱动即可。
2. 修正连接字符串的格式错误
你的连接字符串中Driver ={...}的等号前后有空格,这会导致驱动名称识别失败,必须去掉多余空格:
Public Function GetSQLConnectionString() As String GetSQLConnectionString = "Driver={MYSQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Port=3306;Database=hstest;Uid=xxxx;Pwd=xxxx;" End Function
注意:Driver与{}之间无空格,各参数的分号前后也不要加多余空格。
3. 确认ADODB引用的正确性
打开VBA编辑器 → 工具→引用,确保只勾选一个版本的Microsoft ActiveX Data Objects x.x Library(推荐选最新稳定版,如6.1),避免多版本冲突。
4. 备选:使用DSN连接方式
若直接驱动字符串仍有问题,可先在ODBC数据源管理器(注意位数与Excel一致)中创建系统DSN,然后用以下连接字符串:
GetSQLConnectionString = "DSN=你的DSN名称;Uid=xxxx;Pwd=xxxx;"
内容的提问来源于stack exchange,提问作者ScanGuard
相关产品推荐
相关产品推荐

