作者:mobiledu2502868933 | 来源:互联网 | 2023-10-11 12:28
如果没有安装ODBC该怎样用VBA连接Mysql数据库呢?给大家介绍一种方法。不仅可以连接数据库,并且代码更简洁和Excel也具有更好的交互性。我们需要安装一个插件,SqlCelF
如果没有安装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/