编写Excel VBA工具,连接并操作Mysql 数据库。
系统环境:
OS:Win7 64位 英文版
Office 2010 32位 英文版
1、VBA连接MySql前的准备
Tools--->References..---->引用
勾选Microsoft ActiveX Data Objects 2.8 Librarys 和Microsoft ActiveX Data Objects Recordset 2.8 Librarys
如下图所示:
2、安装Mysql ODBC连接服务
下载连接:https://dev.mysql/downloads/connector/odbc
注意:这里使用32位的版本
如下图所示:
3、下载上图中Windows(x86,32-bit),Zip Archive版本,在测试中,使用64位的版本无法连接到Mysql
把下载上述文件拷贝放到资源管理器里,放到合适位置,解压,点击里面的install.bat批处理文件。
从“控制面板”--->“管理工具”---->ODBC,打开以后,从这个里面无法看到Mysql的驱动,实际上使用的是下面32位的ODBC驱动
C:\Windows\SysWOW64\文件夹下的odbcad32.exe
4、VBA 代码如下:
Sub TestConnectTodb()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=localhost;Port=3306;Database=test;Uid=root;Pwd=123456;OPTION=3;"
conn.Open
rs.Open "select * from employee", conn
With ThisWorkbook.Worksheets("Sheet1")
.Range("B2").CopyFromRecordset rs '从B2位置开始复制到Sheet1页面中
End With
' Sheet1.Cells(1, 1) = rs(0) 'rs(i):第i个字段的数据,i为0至rs.Fields.Count-1
' Sheet1.Cells(1, 2) = rs(1)
rs.Close: Set rs = Nothing
conn.Close: Set conn = Nothing
MsgBox "处理完毕!"
End Sub
代码演示结果如下:
数据库数据有两条
将数据全部取出:
关于 Set rs = New ADODB.Recordset 中的“rs” 参考函数:
在RecordSet组件中,常用的属性和方法有:
rs.Fields.Count:RecordSet对象字段数。
rs(i).Name:第i个字段的名称,i为0至rs.Fields.Count-1
rs(i):第i个字段的数据,i为0至rs.Fields.Count-1
rs("字段名"):指定字段的数据。
rs.Record.Count:数据记录总数。
rs.EOF:是否最后一条记录。
rs.MoveFirst:指向第一条记录。
rs.MoveLast:指向最后一条记录。
rs.MovePrev:指向上一条记录。
rs.MoveNext:指向下一条记录。
rs.GetRows:将数据放入数组中。
rs.Properties.Count:ADO的ResultSet或Connection的属性个数。
rs.Properties(item).Name:ADO的ResultSet或Connection的名称。
rs.Properties:ADO的ResultSet或Connection的值。
更多推荐
VBA 连接MySQL数据库
发布评论