这两天把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
