使用ExcelScript循环复制MASTER表生成全年每日日期命名工作表方案
全年每日工作表批量生成Excel脚本实现
以下是调整后可直接运行的完整脚本,已经内置了全年日期遍历、自动累加日期、闰年判断逻辑,替换了原有的硬编码内容:
function main(workbook: ExcelScript.Workbook) { // 在这里指定你要生成工作表的目标年份 const targetYear = 2022; // 获取MASTER模板工作表,运行前请先选中MASTER表即可正常调用 const masterSheet = workbook.getActiveWorksheet(); // 自动判断目标年份是否为闰年,确定全年总天数 const isLeapYear = (targetYear % 4 === 0 && targetYear % 100 !== 0) || targetYear % 400 === 0; const totalDays = isLeapYear ? 366 : 365; // 初始化日期变量为目标年份的1月1日 let currentDate = new Date(targetYear, 0, 1); // 循环遍历全年每一天 for (let i = 0; i < totalDays; i++) { // 格式化日期为MM-DD-YYYY格式,和原逻辑保持一致,可按需修改格式 const month = String(currentDate.getMonth() + 1).padStart(2, '0'); const day = String(currentDate.getDate()).padStart(2, '0'); const dateStr = `${month}-${day}-${targetYear}`; // 复制MASTER模板表,按原有逻辑从第3个位置开始依次排列 const newSheet = masterSheet.copy(ExcelScript.WorksheetPositionType.before, masterSheet); newSheet.setPosition(i + 3); // 重命名工作表为当前日期 newSheet.setName(dateStr); // 给指定单元格填入对应日期 newSheet.getRange("Q1:T2").setValue(dateStr); // 日期自动加1天,进入下一轮循环 currentDate.setDate(currentDate.getDate() + 1); } }
使用注意事项
- 运行脚本前请确保先选中MASTER模板工作表,避免复制错其他表内容
- 如果需要调整日期格式(比如改为
2022年1月1日),只需要修改dateStr的拼接规则即可 - 生成365/366个工作表耗时较长,如果遇到运行超时,可以按月份拆分循环分批执行
- 只需要修改代码顶部
targetYear的数值,即可生成任意对应年份的全部工作表
内容的提问来源于stack exchange,提问作者Sleipner
相关产品推荐
相关产品推荐

