这两天把Access移植到MYSQL四上,遇到个问题,始终报错说…….80004005-未找到数据源名称并且未指定默认驱动程序
于是上网查,折腾了一整天,最后发现原来是odbc的驱动的问题,我电脑是64位的,要用64bit的odbc数据源来配置,不能直接在控制面板下的管理工县中配。直接配的后果就是excel中找不到。
做法就是:运行 C:Windows日\SysWOW64\odbcad32.exe,在这里配,就解决问题了
还有就是,我用64位的odbc驱动日竟然没有这个选项,用32位却成功了。
最后得出一个结论,office是x86还是x64无所谓,但是mysgl与odbc驱动的版本一定要配套,不然容易出错,在 vba只 代码中,驱动名一定要与配置odbc数据源的名字相同,不然也会找不到。最后贴出我的代码,供大家参考下。
Sub 获取数据() ' 定义连接字符串变量 Dim connectionString As String Dim conn As Object ' 创建ADODB连接对象 Set conn = CreateObject("ADODB.Connection") ' 设置连接字符串,包含服务器地址、数据库名、用户名和密码 connectionString = "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _ "SERVER=你的IP;" & _ "DATABASE=数据库名;" & _ "USER=用户名;" & _ "PASSWORD=密码;" & _ "OPTION=3" ' 打开连接 conn.Open connectionString '判断状态 If conn.State = 0 Then Debug.Print "连接已关闭" ElseIf conn.State = 1 Then Debug.Print "连接已打开" Else Debug.Print "连接状态: " & conn.State End If ' 执行SQL查询 Dim sql As String sql = "SELECT * FROM Sd_History;" Dim rs As Object Set rs = CreateObject("ADODB.Recordset") rs.Open sql, conn ' 将查询结果导入Excel Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("工作表1") ' 指定要导入数据的工作表 Dim row As Long row = 2 ' 数据从第二行开始 Sheets("收单历史").Select Range("A2:X1000").ClearContents Do Until rs.EOF ws.Cells(row, 1).Value = rs.Fields(0).Value ' 注意:字段不支持中文 ws.Cells(row, 2).Value = rs.Fields(1).Value ws.Cells(row, 3).Value = rs.Fields(2).Value ws.Cells(row, 4).Value = rs.Fields(3).Value ws.Cells(row, 5).Value = rs.Fields(4).Value ws.Cells(row, 8).Value = rs.Fields("id").Value row = row + 1 rs.MoveNext Loop ' 清理资源 rs.Close Set rs = Nothing conn.Close Set conn = Nothing MsgBox "数据获取成功!" End Sub
本文为宁若水!原创文章,转载无需和我联系,但请注明来自[若水]博客 www.lalaya.net