WPS生成工资条,JSA宏模板!

E精精
E精精 WPS资深用户Lv.3 优质创作者KVPWPS函数专家

Lv.3 优质创作者

今天主要有点,实战的WPS-JS宏代码,本次实战案例是根据工资表生成工资条,主要熟悉一下JS代码,感受一下和VBA代码的区别!

▍效果预览

下面动画演示一下JSA宏实现的工资条效果,代码基本OK!下面我们还是带大家看一下JSA的实现方式及和VBA中的一些差别!

▼ 动画演示

▍代码解析

定义名称基本现代的语法常用的就是const let,快速区别使用哪一个,就是看这个变量后续是否发生变化,前者“不变”!

然后核心的对象API,90%基本户和VBA一样,只是严格区分大小写!

比如CurrentRegion、ActiveSheet 是不是都非常熟悉!

在JSA宏中,Msgbox也可以继续使用,通用也可以使用JS中alert,但是没有Mgbox功能丰富,如果只是简单提示可以用一下!

其他if语法等就要去学习一下JS语法了,基本都是{} 风格!

return属于VBA中没有的,但是类似Function中的 exit Function语法,表示返回结果,如果单用,相当于退出了!

下面的代码核心就是获取一下要处理的工作表对象,赋值给ws,方便调用,获取要处理的行数和列数,提示一下用户操作不可撤销,做好数据备份管理!

代码的第二部分是核心,基本就是一个for循环遍历每一行,插入标题和一行空行

注意下for语法和VBA肯定是完全不同的,for(初始值;判断;步长)

这里i--,相当于step -1,也就是倒序遍历!

你会发现如果你有VBA基础,99%的Excel对象模型API都不用重新学习!

核心放在学习JS基础知识即可!

▍源码分享


/*
 * 功能:将工资汇总表自动转换为工资条格式
 */
function 工资条自动生成() {
  const ws = ActiveSheet;
  const dataRange = ws.Range("A1").CurrentRegion;
  const totalRows = dataRange.Rows.Count;
  const totalCols = dataRange.Columns.Count;
  if (totalRows < 3) {
    MsgBox("数据不足!\n需要至少1行表头 + 2行数据才能生成工资条。", 48, "提示");
    return;
  }
  const confirm = MsgBox(
    "即将为 " + (totalRows - 1) + " 名员工生成工资条\n\n⚠" + 
        "操作不可撤销,建议先备份文件\n\n是否继续?",
    36,
    "确认生成"
  );
  if (confirm !== 6) return; // 用户点击"否"
  Application.ScreenUpdating = false;
  // 获取表头行范围(第1行)
  const headerRange = ws.Rows(1);
  // 从最后一条数据往前处理(避免插入行导致行号错位)
  for (let i = totalRows; i >= 3; i--) {
    ws.Rows(i).Insert(xlShiftDown);       // 插入空行(分隔用)
    ws.Rows(i).Insert(xlShiftDown);       // 再插入一行放表头
    headerRange.Copy(ws.Rows(i));          // 复制表头到插入的行
  }
  // 自动调整列宽
  const lastCol = String.fromCharCode(64 + totalCols);
  ws.Range("A1:" + lastCol + "1").Columns.AutoFit();
  Application.ScreenUpdating = true;
  MsgBox(
    "工资条生成完成!\n共生成 " + (totalRows - 1) + " 张工资条",
    64,
    "完成"
  );
}

今天的内容就到这里,更多JSA实战代码会陆续整理到JSA系列教程的实战部分!

▍个人热帖合集

链接

提炼标题

https://bbs.wps.cn/topic/91528

一句话构建Excel加载宏插件

https://bbs.wps.cn/topic/90571

WPS多维表单选项攻略

https://bbs.wps.cn/topic/88851

WPS AI两分钟搞定整理

https://bbs.wps.cn/topic/88759

WPS函数重大更新汇总

https://bbs.wps.cn/topic/88350

Excel批量插入空行技巧

https://bbs.wps.cn/topic/88173

Excel新函数无限递归反查B

https://bbs.wps.cn/topic/87827

数据清洗函数简洁宏优雅

https://bbs.wps.cn/topic/87679

WPS本地云端数据双向同步

https://bbs.wps.cn/topic/87472

WPS Query实战案例体验

https://bbs.wps.cn/topic/87316

多维表发票AI智能识别统计

https://bbs.wps.cn/topic/87298

母亲节日期计算方法

https://bbs.wps.cn/topic/87118

WPS灵犀零代码搞定进销存

https://bbs.wps.cn/topic/87021

统计汇总难倒同事,透视表不会

https://bbs.wps.cn/topic/86949

70万数据汇总效率测试

https://bbs.wps.cn/topic/86814

WPS JS宏迁移全攻略

https://bbs.wps.cn/topic/86077

WPS Query轻量级数据清

https://bbs.wps.cn/topic/84921

WPS小变化改变办公习惯

https://bbs.wps.cn/topic/84782

WPS接入小米大模型实测

https://bbs.wps.cn/topic/65946

WPS上线Power Quer

https://bbs.wps.cn/topic/52166

WPS接入DeepSeek本地

https://bbs.wps.cn/topic/49713

WPSAI函数开启言出法随时代

https://bbs.wps.cn/topic/49198

WPS+DeepSeek提升办

https://bbs.wps.cn/topic/46954

WPS排名公式汇总

https://bbs.wps.cn/topic/45137

WPS判断全部关键词方法

https://bbs.wps.cn/topic/43917

正则函数与动态数组扩展技巧

https://bbs.wps.cn/topic/43479

WPS关系数据查询写法

https://bbs.wps.cn/topic/41881

WPS核心函数搞定多表合并

https://bbs.wps.cn/topic/38184

winx64两个优化函数好用

https://bbs.wps.cn/topic/34024

WPS提取文件及工作表名称函数

https://bbs.wps.cn/topic/33224

多维表实现SUMIFS与进销存

https://bbs.wps.cn/topic/28857

WPS新增函数提取万物

https://bbs.wps.cn/topic/21953

会员管理系统多维表制作

https://bbs.wps.cn/topic/21570

WPS新增GROUPBY和PI

https://bbs.wps.cn/topic/21432

WPS内测新函数体验

https://bbs.wps.cn/topic/19906

WPS函数进化史案例

https://bbs.wps.cn/topic/19714

WPS文本整理妙招

https://bbs.wps.cn/topic/19084

WPS工资条独立查询系统

https://bbs.wps.cn/topic/19016

WPS新增7大动态数组函数体验

https://bbs.wps.cn/topic/18797

VLOOKUP多列结果教程

https://bbs.wps.cn/topic/18339

VLOOKUP模糊匹配通配符教

https://bbs.wps.cn/topic/18031

VLOOKUP函数1对多查询教

https://bbs.wps.cn/topic/18016

VLOOKUP进阶教程

https://bbs.wps.cn/topic/17442

WPS-AI龙年祝福语攻略

https://bbs.wps.cn/topic/16918

VLOOKUP函数基础入门教程

https://bbs.wps.cn/topic/16593

WPS表格欠缺功能

https://bbs.wps.cn/topic/16474

LET+LAMBDA简化公式提

https://bbs.wps.cn/topic/16012

WPS-JSA日期天坑踩平

https://bbs.wps.cn/topic/16010

WPS Python智能补全实

https://bbs.wps.cn/topic/16008

WPS自定义函数人人可用

https://bbs.wps.cn/topic/15907

WPS中#SPILL!错误详解

https://bbs.wps.cn/topic/14379

WPS新增11个函数全解析

https://bbs.wps.cn/topic/8180

WPS动态数组革新领先

江苏省
浏览 434
收藏
9
分享
9 +1
2
+1
全部评论 2
 
wils
wils Lv.4 核心创作者

Lv.4 核心创作者

好👍 其实alert里面可以用html当成网页布局,也有点用 jsa只是不成熟完善,用起来还是有很多惊喜的
   海南省
举报
0
1
E精精
E精精WPS资深用户Lv.3 优质创作者KVPWPS函数专家

Lv.3 优质创作者

确实可以强化,不过一般也就当msgbox用用~
· 江苏省
举报
1
0