不安装ODBC怎样用VBA连接Mysql数据库

如果没有安装ODBC该怎样用VBA连接Mysql数据库呢?

给大家介绍一种方法。不仅可以连接数据库,并且代码更简洁和Excel也具有更好的交互性。

我们需要安装一个插件,SqlCelFuncs或者SqlCel用SqlCel函数来实现此功能。如下:

'引用SqlCel插件必写(随便写在哪个模块中都可以)
Public Function s() As Object
    Set s = Application.COMAddIns("SqlCelAddIn").Object
End Function

'先定义两个连接,提前运行一下就会生成两个连接字符串,一直存在随时可用
Sub DefMysqlConnection()
    s.DefMysqlConn "firstdb", "127.0.0.1", "test", "root", "123456", "3306", "utf8"
    s.DefMysqlConn "seconddb", "127.0.0.1", "test2", "root", "123456", "3306", "utf8"
End Sub

'主程序入口
Sub QueryMysql()
    s.UseConn "Mysql", "firstdb"   '使用名为firstdb的Mysql连接
    Call QueryToRs  '从firstdb中查询数据
    s.UseConn "Mysql", "seconddb"   '使用名为seconddb的Mysql连接
    Call QueryToArr '从seconddb中查询数据
    Call QueryToQax '从seconddb中查询数据
End Sub

'将数据查到Recordset数据集中
Sub QueryToRs()
    Dim rs As Object, i As Integer
    Set rs = s.QueryToRs("SELECT * FROM cars")
    With Sheets("TB1")
        For i = 0 To rs.Fields.Count - 1
            .Cells(1, i + 1).Value = rs.Fields(i).Name
        Next i
        .Range("A2").CopyFromRecordset rs
    End With
End Sub

'将数据查到二维数组中
Sub QueryToArr()
    Dim arr As Variant
    arr = s.QueryToArr("SELECT* FROM colleges", True)
    s.ArrayToExcel arr, Sheets("TB3").Range("A1")
End Sub

'将数据查询到QAX(DataTable)中
Sub QueryToQax()
    Dim qax As Variant
    Set qax = s.QueryToQax("SELECT * FROM colleges")
    s.QAXToRng qax, Sheets("TB2").Range("A1"), "TableStyleDark10", True
End Sub

最后一个查询的效果如下:
在这里插入图片描述
sqlcel函数官网介绍:
https://sqlcel.com/sqlcelfuncs/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值