【WPS JSA】设置打印页面参数_所有工作表

在上一文章中,介绍了用WPS JSA代码对当前工作表进行打印页面参数设置,使用起来很快捷。在实际工作中,对工作簿中同结构的所有工作表或对多个选中的工作表进行同一页面参数设置,更是常见。特别是工作表特别多时,用代码操作的优势就更突显了,你会越来越喜欢代码。
接下来直接上代码。
【WPS JSA】代码:
function 设置打印页面参数_所有工作表() {//功能:批量设置所有工作表的打印页面参数//【使用说明】//1. 在WPS表格中打开需要设置的工作簿//2. 按下 Alt+F11 打开宏编辑器//3. 插入新模块,将本代码复制进去//4. 运行“设置打印页面参数_所有工作表”函数//5. 查看弹窗提示确认设置结果//【功能特点】//1. 自动遍历所有工作表,批量应用统一打印设置//2. 智能处理工作表保护(自动解除,不设密码的保护可绕过)//3. 详细错误记录和汇总报告//4. 不影响原有数据内容和格式try {// 第一步:获取当前活动工作簿const activeWorkbook = ActiveWorkbook;if (!activeWorkbook) {throw new Error("未检测到活动工作簿,请确认打开了一个有效的工作簿。");}// 第二步:获取所有工作表的集合const worksheets = activeWorkbook.Worksheets;if (!worksheets || worksheets.Count === 0) {throw new Error("当前工作簿中没有检测到任何工作表。");}let successCount = 0; // 成功计数let failCount = 0; // 失败计数let failSheets = []; // 记录失败的工作表名称及原因// 第三步:遍历所有工作表逐一设置// 注意:WPS/Excel的集合索引从1开始,不是从0开始for (let i = 1; i <= worksheets.Count; i++) {const sheet = worksheets(i);const sheetName = sheet.Name;try {// 处理工作表保护// ProtectContents 属性表示工作表是否处于保护状态// 注意:只有无密码的保护才能直接解除,有密码的保护会报错if (sheet.ProtectContents) {sheet.Unprotect(); // 尝试解除保护(无密码情况)}// 激活当前工作表// 某些页面设置属性(如PrintTitleRows)需要在工作表激活状态下才能设置// 虽然本例中不需要,但保留此操作以兼容某些特殊属性sheet.Activate();// 调用核心设置函数applyPageSetupToSheet(sheet);successCount++;} catch (sheetError) {// 记录失败的工作表信息failCount++;failSheets.push(`${sheetName}(原因:${sheetError.message || "未知错误"})`);// 如果环境支持控制台输出,则打印详细错误信息(用于调试)if (typeof console !== "undefined" && console.error) {console.error(`设置工作表「${sheetName}」失败:`, sheetError);}}}// 第四步:显示操作结果汇总let resultMsg = `📊 页面设置批量完成!\n\n`;resultMsg += `✅ 成功:${successCount} 个工作表\n`;resultMsg += `❌ 失败:${failCount} 个工作表\n`;if (failSheets.length > 0) {resultMsg += `\n📋 失败列表:\n${failSheets.join("\n")}\n`;resultMsg += `\n💡 提示:失败的工作表可能处于保护状态或存在特殊格式。`;}resultMsg += `\n\n📄 统一设置内容:\n`;resultMsg += `• 纸张:A4 · 横向 · 缩放 100%\n`;resultMsg += `• 边距:左/右 11磅 · 上/下 30磅\n`;resultMsg += `• 对齐:水平居中 · 垂直不居中\n`;resultMsg += `• 页脚:中央显示页码\n`;resultMsg += `• 重复标题行:第1~3行\n`;resultMsg += `• 黑白打印 · 不打印网格线/行号列标`;// MsgBox 参数说明:// 参数1:消息文本// 参数2:图标类型(64=信息图标,48=警告图标,16=错误图标)// 参数3:对话框标题const iconType = failCount === 0 ? 64 : 48;MsgBox(resultMsg, iconType, "批量操作完成");} catch (error) {// 全局错误处理// 捕获并处理在获取工作簿或工作表时发生的异常const errorMsg = error.message || "未知错误";if (typeof console !== "undefined" && console.error) {console.error(`[批量设置失败] ${errorMsg}`, error);}MsgBox(`❌ 批量设置打印参数失败!\n\n` +`错误信息:${errorMsg}\n\n` +`🔍 可能原因:\n` +`1. 当前没有打开任何工作簿\n` +`2. 工作簿结构被保护\n` +`3. 权限不足或文件为只读模式\n\n` +`📌 建议:请检查文件状态后重试。`,16, // 16 = 错误图标"操作失败");}}function applyPageSetupToSheet(sheet) {// 获取页面设置对象(所有打印参数都在这个对象中)const ps = sheet.PageSetup;const sheetName = sheet.Name;// 1. 边距设置(单位:磅)// 1磅 = 1/72英寸 ≈ 0.0353厘米// 常用边距参考:左右11磅约0.39厘米,上下30磅约1.06厘米const MARGIN = {left: 11, // 左边距 11磅(约3.9毫米)right: 11, // 右边距 11磅top: 30, // 上边距 30磅(约10.6毫米)bottom: 30, // 下边距 30磅header: 15, // 页眉边距 15磅(约5.3毫米)footer: 15 // 页脚边距 15磅};ps.LeftMargin = MARGIN.left;ps.RightMargin = MARGIN.right;ps.TopMargin = MARGIN.top;ps.BottomMargin = MARGIN.bottom;ps.HeaderMargin = MARGIN.header;ps.FooterMargin = MARGIN.footer;// 2. 页面方向与纸张ps.Orientation = 2; // 2 = 横向(1 = 纵向)ps.PaperSize = 9; // 9 = A4纸张(不同版本可能略有差异)ps.Zoom = 100; // 缩放比例 100%(范围10-400)ps.FirstPageNumber = 1; // 起始页码(1表示从1开始,-4105表示自动)// 3. 对齐方式// 水平居中:通常需要(让内容在纸张中央)// 垂直居中:通常不需要(只有一页内容太少时才需要)ps.CenterHorizontally = true;ps.CenterVertically = false;// 4. 页眉与页脚// 页眉(全部清空)ps.LeftHeader = "";ps.CenterHeader = "";ps.RightHeader = "";// 页脚:中央显示当前页码和总页数// &P = 当前页码,&N = 总页数ps.LeftFooter = "";ps.CenterFooter = "第 &P 页 / 共 &N 页";ps.RightFooter = "";// 5. 打印内容与样式控制ps.PrintErrors = 0; // 0 = 显示错误值, 1 = 空白, 2 = --, 3 = #N/Aps.Order = 1; // 1 = 先行后列, 2 = 先列后行ps.PrintGridlines = false; // false = 不打印网格线, true = 打印网格线ps.PrintHeadings = false; // false = 不打印行号列标ps.BlackAndWhite = true; // true = 黑白打印, false = 彩色打印// 6. 打印分辨率(可选)// 注意:某些WPS版本可能不支持此属性,使用try-catch保护if (typeof ps.PrintQuality === "function") {try {// 参数:[水平DPI, 垂直DPI],undefined表示使用系统默认ps.PrintQuality(undefined, 600);} catch(e) {// 某些版本可能不支持,忽略错误继续执行}}//7. 批注打印设置ps.PrintComments = -4142; // -4142 = 不打印批注(xlPrintNoComments)// 8. 打印区域与重复标题ps.PrintArea = ""; // 空字符串表示打印整个工作表ps.PrintTitleRows = "$1:$3"; // 重复打印第1~3行作为标题行// 格式:行引用:"$1:$3",列引用:"$A:$C"ps.PrintTitleColumns = ""; // 不重复打印左侧标题列}function 设置打印页面参数_选中工作表() {//扩展功能:为选中的工作表设置打印参数,更灵活//使用方法://1. 按住Ctrl键,在工作表标签上点击,选中多个工作表;按住Shift键,支持联选//2. 运行此函数,只对选中的工作表进行设置//优势://- 更灵活,可选择性设置部分工作表//- 支持不连续的多选(Ctrl+点击)//- 适合大型工作簿,避免处理不需要的工作表try {// ActiveWindow.SelectedSheets 获取当前选中的工作表集合// 支持:1. 单选工作表 2. Ctrl多选 3. Shift连续多选let sheets = ActiveWindow.SelectedSheets;if (!sheets || sheets.Count === 0) {throw new Error("请先按住Ctrl选中要设置的工作表标签");}let success = 0;let fails = [];// 遍历所有选中的工作表for (let i = 1; i <= sheets.Count; i++) {let sheet = sheets(i);try {// 解除保护(如果有的话)if (sheet.ProtectContents) sheet.Unprotect();// 应用页面设置applyPageSetupToSheet(sheet);success++;} catch(e) {fails.push(sheet.Name);}}// 显示结果let msg = "✅ 已完成 " + success + " 个工作表";if (fails.length) msg += "\n⚠️ 失败:" + fails.join("、");MsgBox(msg, 64, "打印设置");} catch(e) {MsgBox("❌ " + e.message, 16, "提示");}}
操作步骤:
1.打开你的WPS表格文件。按下Alt + F11(或点击「开发工具」→「WPS宏编辑器」),打开WPS JSA编辑器。
2.插入模块并粘贴代码。在编辑器左侧右键点击「项目」中的当前工作簿,选择「插入」→「模块」,将代码完整复制到右侧代码窗口中。
3.运行宏。回到WPS表格界面,点击「开发工具」→「运行宏」,找到“设置打印页面参数_所有工作表”宏,点击「运行」。工作簿中所有工作表的页面设置就完成了。
说明一:上面的代码有点长,别的都可以不用记,注意别误改动了。只要学会改动打印页面设置的不同参数(不同颜色标识了,结合点英文,好区分)就可以了。自己作好备份,可以多次尝试改动,结合预览效果,就基本掌握了。
说明二:代码中包括一个扩展功能,对选择的多工作表进行页面设置,记得用Ctrl或Shift键先选多个工作表,再运行宏“设置打印页面参数_选中工作表”即可。
说明三:已上传了WPS JSA代码导出文件(.js),在WPS JSA编辑器状态下,按Ctrl+O就是导入js文件,按Ctrl+Shift+S就是导出js文件,尝试使用一下。
往期内容:
可下载以下WPS表格查看测试:
2026年06月15日-【WPS JSA】设置打印页面参数_所有工作表-示例.zip

持续更新,关注点赞收藏。
学会了WPS JSA实战,就是香!!!
夜雨聆风