• 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. 按照编程的操作规范,应该要进行调试,这里就不做描述;

    四. 使用演示

  • 相关阅读:
    转载 Markdown 写法 直接考代码 反正博客园支持
    最全的ADB命令行大全(转)
    Python 帮你玩微信跳一跳 GitHub Python脚本
    React中setState的怪异行为 ——setState没有即时生效
    详解es6中Proxy代理对象的作用
    react-router和react-router-dom的区别
    webpack4 Cannot find module '@babel/core'
    vue-devtools的安装与使用
    Vuex的mapGetters方法使用报错
    vuex直接修改state 与 用commit提交mutation来修改state的差异
  • 原文地址:https://www.cnblogs.com/airlinp/p/12425619.html
Copyright © 2020-2023  润新知