Office Scripts技术问题:如何将.xlsb文件转换为.xlsx格式
Office Scripts 实现XLSB转XLSX的解决方案
你遇到的Property 'SaveAs' does not exist in workbook错误,核心原因是Office Scripts的API逻辑和VBA完全不同——你写的是VBA的SaveAs语法,但ExcelScript.Workbook对象根本没有这个方法。Office Scripts基于TypeScript,运行在Excel Online环境中,无法直接通过脚本本身完成跨格式的文件另存操作,必须结合Power Automate实现。
步骤1:修正你的Office Script
先确保脚本完成工作表的编辑任务(取消保护、移除筛选、删除行),注意使用传入的password参数而非硬编码值:
function main(workbook: ExcelScript.Workbook, password: string) { const selectedSheet = workbook.getWorksheet("Draft"); // 用传入的密码取消工作表保护 selectedSheet.getProtection().unprotect(password); // 移除自动筛选(先判断是否存在,避免无筛选时报错) const autoFilter = selectedSheet.getAutoFilter(); if (autoFilter) { autoFilter.remove(); } // 删除第1-6行 selectedSheet.getRange("1:6").delete(ExcelScript.DeleteShiftDirection.up); }
步骤2:用Power Automate完成格式转换
Office Scripts无法直接创建新文件并保存为XLSX,需要通过Power Automate的动作实现格式转换:
- 新建Power Automate流,选择触发方式(比如「手动触发流」)。
- 添加「Excel Online (Business) > 运行脚本」动作:选择目标XLSB文件,选中你修改后的脚本,传入对应的
password参数。 - 添加「Excel Online (Business) > 将工作簿另存为」动作:
- 源工作簿选择你要转换的XLSB文件;
- 保存类型选择「Excel工作簿(.xlsx)」;
- 文件名填写替换后的名称(比如把原文件名的
.xlsb改成.xlsx); - 选择保存的目标位置(比如同一个文件夹)。
流运行后,会先完成工作表的编辑操作,再自动将XLSB文件转换为XLSX格式保存。
内容的提问来源于stack exchange,提问作者Jonnyboi
相关产品推荐
相关产品推荐

