Excel简单编程学习笔记

多少年来,我都一直认为Excel就是一个表格工具,用来记一记数据内容即可,直到后来开发同事用Excel做出了很花哨的动态报告,可以从数据库提取数据,自动填充排版数据,可以自动计算绘图,自动套用模版格式,自动生成pdf…  太可怕了。

我目前无法达到这样的水平,只能从最基本的数据提取开始。

一. 开启编程模式

1. Excel版本建议在2010以上,目前我使用的是2013;

2. 进入Excel后,依次点击打开左上角文件 → 选项,在选项中选择“自定义功能区”,将“开发工具”勾选,然后确定;

 →  → 

3. 回到excel主界面,可以看到开发工具选项卡已经显示,点击后找到最左侧的Visual Basic按钮,进入后,我们的所有编写代码将在里面完成;

二. 页面布局

1. 目前进行数据提取的学习实践,所以在excel主界面,我们需要设计一个基本布局界面,和我们平时使用excel表格,做表格样式一样;

2. 现在我参照sql中测试表的样式,在excel做相同页面布局;

  

三. 代码编写,功能实现

1. 增加触发按钮,如同SSMS中的执行按钮一样,excel界面上也需要增加一个执行按钮,“开发工具”→“插入”→“表单控件按钮”;

2. 按钮绑定代码宏,单纯的按钮是没有功能的,所以需要跟按钮绑定相关的代码宏,在此我提前新建了一个宏“数据提取”,选择后点击确定即可,同时给按钮重新命名一下;

3. 正式编辑宏代码,接上图,选择宏后,点击编辑按钮,进入到了VB代码编辑页面,我们的功能属于“模块1”,之后就在右侧sub和end sub中编写代码;

4. 首先定义变量参数;

i:循环变量;

box1,box2:按钮条件变量,比如开始时间、结束时间;

cn:数据库连接,ADODB.Connection数据库连接控件;

rs:记录集,ADODB.Recordset记录集控件;

strCn:数据库连接串存储变量,下方填写了数据库连接;

strSQL:sql语句存储变量;

注意:在此步一定要注意勾选引用,否则部分功能控件无法使用。

工具 → 引用,将Microsoft ActiveX Data Objects 2.6 Library勾选,确定

5. 定义box的类型

这里将用户输入的“日期”内容记录到box变量。

6. 连接数据库,编写sql语句,打开记录集记录查询到的数据;

cn.Open strCn:连接数据库;

rs.Open strSQL, cn:将sql语句查询出的数据记录到记录集;

i=2:起始行从第2行开始

7. 数据载入表格页面;

 Worksheets("Sheet1").Unprotect:解除选项页“Sheet1”的保护,可以写入数据;

Do While Not rs.EOF:循环读取数据集中的数据,到达尾行则停止循环;

Worksheets("Sheet1").Cells(i, 1).Value = rs("id"):将sql查询出的数据中的“id”字段,填入选项页“Sheet1”的第2行开始的第1列,其他内容类似,不做重复描述;

rs.MoveNext:记录开始下一条,与sql中的游标功能类似,逐行循环;

i = i + 1:循环递增1;

Loop:循环语法中的执行,类似于while … do中的do;

rs.Close:结束记录集;

cn.Close:结束数据库连接;

8. 按照编程的操作规范,应该要进行调试,这里就不做描述;

四. 使用演示

原文地址:https://www.cnblogs.com/airlinp/p/12425619.html