前言
在处理EXCEL数据时,如果会一些VBA脚本还是能带来很多方便的。
这里使用WPS表格做为样例
前提
使用此功能,需要对VB语法有一定的了解
下载并安装MySQL ODBC驱动(安装32位版本):
MySQL :: Download Connector/ODBC
步骤
1.开发工具
1.1 首先确认一下是否在工具栏有【开发工具】选项卡。如果没有看后面,请继续往下看。
1.2 开启【开发工具】选项卡
1.2.1 通过菜单打开【工具->选项】
1.2.2 在打开的【选项】窗口中选择,【自定义功能区】然后找到【开发工具】勾选上,就可以在工具栏出现【开发工具】选项卡了。
2.VB编辑器
2.1 点击【VB编辑器】可以打开一个写代码的窗口。
2.2 代码可以如下样式窗口中进行编写。图中工程栏可选择当前所处理的表单(Sheet)页。选择Activate表示激活当前表单页时发生。(可以看到,还有很多事件可选择,依据实际情况进行选择就可)
3.应用实例
3.1 需求
开发一个从数据库查询数据到EXCEL表的功能。
3.2 准备工作
3.2.1 数据准备,使用MySQL数据库(MySQL使用方法这里不做说明)
3.2.1.1创建一个数据表,这里使用作者已有数据,表名meeting_room。
数据表中已有如下数据
3.3 开发工作
3.3.1 添加控件
3.3.1.1 在EXCEL表格上添加一个按钮,做为触发动作。
3.3.1.2 要想修改按钮上的文字,可以右键按钮,选择【命令按钮 对象->编辑】进行修改。
3.3.1.3 保存文件,需要保存成启用宏的工作薄,才能执行代码。
3.3.2 编写代码
3.3.2.1 右键【查看代码】可以弹出代码编辑器。自动生成一段代码(事件函数),表示单击按钮时发生。
3.3.2.2 在事件函数中添加代码:
Private Sub CommandButton1_Click()
Const adUseClient = 3
strConn = "driver={MySQL ODBC 8.0 ANSI Driver};server=localhost;uid=root;pwd=[密码];database=bk_meeting;port=3306;"
Set objConn = CreateObject("adodb.connection")
objConn.Open strConn
ssql = "Select * From meeting_room"
Set rs = CreateObject("adodb.recordset")
rs.CursorLocation = adUseClient
rs.Open ssql, objConn, 1, 3
Dim iRow, iCol As Integer
iRow = 2
'写标题
Sheet1.Cells(1, 1).Value = rs(0).Name
Sheet1.Cells(1, 2).Value = rs(1).Name
Sheet1.Cells(1, 3).Value = rs(2).Name
Sheet1.Cells(1, 4).Value = rs(3).Name
Sheet1.Cells(1, 5).Value = rs(4).Name
Sheet1.Cells(1, 6).Value = rs(5).Name
Sheet1.Cells(1, 7).Value = rs(6).Name
Sheet1.Cells(1, 8).Value = rs(7).Name
'写内容
For i = 1 To rs.RecordCount
Sheet1.Cells(iRow, 1).Value = rs(0).Value
Sheet1.Cells(iRow, 2).Value = rs(1).Value
Sheet1.Cells(iRow, 3).Value = rs(2).Value
Sheet1.Cells(iRow, 4).Value = rs(3).Value
Sheet1.Cells(iRow, 5).Value = rs(4).Value
Sheet1.Cells(iRow, 6).Value = rs(5).Value
Sheet1.Cells(iRow, 7).Value = rs(6).Value
Sheet1.Cells(iRow, 8).Value = rs(7).Value
iRow = iRow + 1
rs.MoveNext
Next
rs.Close
objConn.Close
Set rs = Nothing
Set objConn = Nothing
End Sub
4 验证结果
4.1 返回到Excel表格页面,将【设计模式】改回正常模式,此时按钮就可以响应用户操作了。单击按钮。
4.2 查看执行结果
如下图发现数据表里的数据自动读取到了Excel表格中。