批量合并工作簿的终极解决方案 - 使用JS宏轻松实现 点击使用AI助手 了解更多

发布于 2024-11-17 liusiyang 55 编辑

今天这个案例是批量操作的终极应用,学会这个案例,今后的任何批量操作,你都可以为所欲为。

【案例】现在文件夹中有很多个工作簿,我们需要将每个工作簿的活动工作表数据合并到一起。

相当于下面这个会员功能:

现在我们用JS宏来免费实现这个功能。

【操作效果】具体操作效果如下:

【代码】具体代码如下,可按ALT+F11打开WPS宏编辑器,复制下面的代码粘贴到编辑器中。

function 合并工作簿() {

let data = [] //定义名为data的数组,用于存放合并后的数据

let fd = Application.FileDialog(msoFileDialogFilePicker) //打开文件选择器

fd.Filters.Clear() //清除文件选择器内容

fd.Filters.Add('Excel文件', '*.xls;*.xlsx;*.xlsm') //显示EXCEL文件

fd.Title = '请选文件' //设置文件选择器标题

if (fd.Show() != -1) { //如果不选择任何文件

alert('你没选中文件!') //弹出提示

return; //结束退出函数

}

t = parseInt(InputBox("请输入标题行数","标题行数",1)); //标题行数,接受用户输入

for (let i = 0; i < fd.SelectedItems.Count; i++) { //遍历文件

let f=fd.SelectedItems.Item(i + 1) //将文件名赋值给变量f

let wb = Workbooks.Open(f) //打开工作簿,赋值给对象wb

let sh = wb.ActiveSheet //将活动工作表赋值给对象sh

let ar = sh.Range('A1').CurrentRegion.Value2 //将活动工作表数据写入数组ar

ar=ar.map((col)=>['['+f+']'+sh.Name,...col]) //第一列添加工作簿和工作表名

wb.Close(false) //关闭工作簿(不保存)

if(i > 0) ar.splice(0,t) //去掉标题行

data = data.concat(ar) //合并数组

}

data[0][0]='工作簿工作表名' //在第一列首行写入标题

Workbooks.Add() //新建工作簿

let rg=ActiveSheet.Range('a1')

rg.Resize(data.length,data[0].length).Value2=data //将合并合并后的数据写入新工作簿活动工作表

}

【素材下载】点击下方链接,下载文件本地文件夹,在本地文件夹中打开,点击“批量合并工作簿”按钮,即可使用合并功能。

https://kdocs.cn/l/crHXJZE0v0qr

原文链接:https://bbs.wps.cn/topic/9428

上一篇: WPS从入门到熟练的快速指南
下一篇: WPS文字技巧:高效制作单词表的两种方法
相关文章