Excel读取某一列的宏代码VBA代码源码及解说(详尽版)

背景

业务需要依据详细设计文档编写所有对应的页面

问题

工作量大,11张大表(几十上百字段)时间紧 3天完成

核心

有完整的表设计,可通过excel手动编辑完成。

新问题

普通字段没问题,可增加了字典后工作量骤然提升,这种特殊性让工作的难度和体量都给手工操作Excel带来了挑战

解决方案

通过代码实现手工操作excel的工作,也就是编写VBA宏

Sub detailPage()
‘
‘ 沫沫金
‘ 生成居民健康档案浏览器页面,时间: 2017/08/17
‘
Dim tri As Integer, td, tableName, nameC, valC, dicC, saveC As String
‘
‘配置区域:Config
‘
‘三列一行控制器记录仪
tri = 1
‘表名列
tableName = LCase(Cells(1, "D"))
‘label列
nameC = "A"
‘值列
valC = "B"
‘字典列
dicC = "C"
‘存储列
saveC = "F"

For n = 1 To [A65536].End(xlUp).Row
    ‘初始行内容
    td = ""
    ‘三列一行
    If tri = 1 Then td = "<tr>"
    ‘字段说明
    td = td + "<td width=‘‘33%‘‘><h3><i class=‘‘ico ico_23‘‘></i>" + Cells(n, nameC)
    ‘字典字段特殊处理
    If Cells(n, dicC) = "" Then
    td = td + "</h3><p>${sessionScope.data." + tableName + "[index]." + LCase(Cells(n, valC)) + "}</p></td>"
    Else
    td = td + "</h3><p><dic:dic type=""" + Cells(n, dicC) + """ value=""${sessionScope.data." + tableName + "[index]." + LCase(Cells(n, valC)) + "}"" /></p></td>"
    End If
    ‘三列一行结束处理
    If tri = 3 Then td = td + "</tr>"
    ‘拼接一行,扔到空闲列统一拷贝
    Cells(n, saveC) = td
    ‘当前列记录
    tri = tri + 1
    ‘三列一行控制器
    If tri > 3 Then tri = 1
Next n

MsgBox "恭喜你,详细信息生成成功。"
‘
End Sub

启用宏,拷贝到代码区运行即可看到拼接结果。完全自定义拼接格式,百分百解放双手的工具。

下面,给java开发同伴重点说明下

if判断 条件不用圆括号
条件判断等于一个等号
格式排版必须控制好
没有分号

以上,运行说明,在当前的sheet页Alt+F8运行上面的宏。生成完成会收到友情提醒,好了,愉快的VBA结束。

by.沫沫金

于2017-08-17 西安

时间: 2024-12-19 23:12:12

Excel读取某一列的宏代码VBA代码源码及解说(详尽版)的相关文章

Linux内核导出符号宏定义EXPORT_SYMBOL的源码分析

源代码: <include/linux/moudule.h> --. #ifndef MODULE_SYMBOL_PREFIX #define MODULE_SYMBOL_PREFIX "" #endif --. struct kernel_symbol       //内核符号结构 { unsignedlong value;  //该符号在内存地址中的地址 constchar *name;     //该符号的名称 }; -- #define __EXPORT_SYMBO

HashSet保证元素唯一性的代码体现(源码和内部图 进行解析)

--------------------------------------------------------------- 测试类: /* * 需求:存储自定义对象,并保证元素的唯一性 * 要求:如果两个对象的成员变量值都相同,则为同一个元素. *  * 目前是不符合我的要求的:因为我们知道HashSet底层依赖的是hashCode()和equals()方法. * 而这两个方法我们在学生类中没有重写,所以,默认使用的是Object类. * 这个时候,他们的哈希值是不会一样的,根本就不会进行后

从静态代码扫描引擎PMD源码学习-多线程任务模型和File过滤设计

不知不觉在工作中研究PMD并定制规则已经4个月左右了.其实PMD有许多值得我学习的源码,不过出于时间并不曾动笔.今天简单记录总结一下PMD的多线程和File过滤设计的源码. 1 public class MultiThreadProcessor extends AbstractPMDProcessor { 2 3 private ExecutorService executor; 4 private CompletionService<Report> completionService; 5

Spark GraphX图计算【代码实现,源码分析】

一.简介 参考:https://www.cnblogs.com/yszd/p/10186556.html 二.代码实现 1 package big.data.analyse.graphx 2 3 import org.apache.log4j.{Level, Logger} 4 import org.apache.spark.graphx._ 5 import org.apache.spark.rdd.RDD 6 import org.apache.spark.sql.SparkSession

spring应用中多次读取http post方法中的流(附源码)

一.问题简述 先说下为啥有这个需求,在基于spring的web应用中,一般会在controller层获取http方法body中的数据. 方式1: 比如http请求的content-type为application/json的情况下,直接用@RequestBody接收. 方式2: 也有像目前我们在做的这个项目,比较原始,是直接手动读取流.(不要问我为啥这么原始,第一版也不是我写的.) @RequestMapping("/XXX.do") public void XXX(HttpServl

基于sklearn 实现决策树(含最简代码,复杂源码:预测带不带眼镜)

最简代码: 1 #简单的决策树分类 2 from sklearn import tree 3 features = [[300,2],[450,2],[200,8],[150,9]] 4 labels = ['apple','apple','orange','orange'] 5 clf = tree.DecisionTreeClassifier() 6 clf = clf.fit(features,labels) 7 print(clf.predict([[400,6]])) 预测代码: 数据

重构——让你的代码接近框架源码

前一段我们的项目搞了一次重构,我简单做了一个ppt,下面我们来一起分享下 代码的坏味道 1.重复代码(难维护) ?提取公共函数 2.函数过长(难理解) ?拆成若干函数 3.类过大(难理解) ?拆成若干类 4.参数多(难用) ?将参数封装成结构或类 5.万能类(改动频繁) ?拆,将总是一起变化的东西放在一块儿,合久必分 6.天女散花逻辑(需求变动改很多类) ?将各个修改点,集中起来,抽象成一个新类. 7.红杏出墙的函数(使用了大量其他类的成员) ?将这个函数挪到那个类里面. 8.数据团(常一起出现

[五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的

Launcher启动类 本文是双亲委派机制的源码分析部分,类加载机制中的双亲委派模型对于jvm的稳定运行是非常重要的 不过源码其实比较简单,接下来简单介绍一下 我们先从启动类说起 有一个Launcher类   sun.misc.Launcher; 仔细看下这简短的几行注释,可以得到有用的信息 ps:直接IDE里面查看反编译的,看不到注释的,可以下载openJDK查看源码,我的这个版本是openjdk-8-src-b132-03_mar_2014 sun.misc.Launcher这个类是系统用于

c#使用NPOI进行Excel导入导出,附源码,vs2010

目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代码 3. Excel导出:介绍C#如何调用NPOI进行Excel导出,包含:流程图.NOPI以.C#代码以及代码分析 4. 源码下载:展示运行图及源码下载 1. 介绍 1.1 第三方类库:NPOI 说明:NPOI是POI项目的.NET 版本,可用于Excel.Word的读写操作. 优点:不用装Office环境. 下载地址:http://np