前言

在处理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表格中。

更多推荐

Excel读取mysql数据库