excel 批量导出图片并指定命名

发布于:2025-05-11 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、开发环境

打开excel文件中的宏编辑器和JS代码调试

工具-》开发工具-》WPS宏编辑器
在这里插入图片描述
左边是工程区,当打开多个excel时会有多个,要注意不要把代码写到其他工作簿去了
右边是代码区
在这里插入图片描述

 二、编写代码

宏是js语言,因此变量或者方法可以网上搜索。比如搜索js变量、js数组方法等。

 1、循环文件所有图片

for (let pic of ActiveSheet.Shapes)

2、提取图片类型 :==msoPicture、==13

pic.Type == msoPicture

3、提取名称所在列

var picName = pic.TopLeftCell.Offset(r,c).Value2;

4、保存

pic.Copy();
pic.SaveAsPicture(picPathName);

整合代码

/**
 * CommandButton2_Click Macro
 */
function CommandButton2_Click()
{
	//r,c 图片所在单元格的偏移量,用来做图片的名字
	var r = 0;
    var c = -1;
	SaveAsPic(r,c);
}
function SaveAsPic(r,c){
	var app = Application.Application,
		acSh = app.ActiveSheet;
	
	// 输入框,用来自定义存图文件夹的名称
	var folderName = app.InputBox("Enter a folder name to save picture"),
		reg = new RegExp('[\\\\/:*?\"<>|]');
	// 输入框,用来自定义存图文件夹的名称
	var c = app.InputBox("输入名称所在列(相对位置,如:-1)"),
		reg = new RegExp('[\\\\/:*?\"<>|]');
	
	// 如果文件夹的名称不规范,给出错误提示
	if(folderName == "" || folderName == false || reg.test(folderName) == true){
		MsgBox("1.文件名不能为空\n\n2.上传的文件名不能包含【\\\\/:*?\"<>|】这些非法字符\n\n建议:修改后重新上传!",jsCritical,"错误提示:")
	}
	else{
		// 新建一个文件夹用来存导出的图片
		//var res = NewFolder(ThisWorkbook.Path, folderName);
		//Console.log(res); // 新建文件夹结果
		
		for (let pic of ActiveSheet.Shapes){
			// 如果当前为"图片"、"==13"
			if (pic.Type == msoPicture){
				var picName = pic.TopLeftCell.Offset(r,c).Value2;
				var picPathName = `${ThisWorkbook.Path}\\${folderName}\\${picName}.jpg`;
				console.log(picPathName);
				pic.Copy();
				pic.SaveAsPicture(picPathName);
				console.log("保存完毕");
			}
		}
	}
}

三、运行结果


网站公告

今日签到

点亮在社区的每一天
去签到