关于VBA Excel开发中连接MySQL数据库的问题

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


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论