You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel重新打开xlsm文件时GET.WORKBOOK函数失效问题求助

GET.WORKBOOK函数重开失效问题排查&解决思路

基础配置排查

  • 确认宏设置等级合理:路径为「文件→选项→信任中心→信任中心设置→宏设置」,不要选择禁用所有宏且不通知,优先选择启用所有宏(仅限受信任位置下的文件,风险较低)或者禁用无数字签名的宏,其他需通知。
  • 确认GET.WORKBOOK的调用方式正确:该函数属于Excel 4.0(XLM)宏函数,不能直接写在单元格内,必须通过「公式→定义名称」封装后调用。比如先定义名称为GetSheetList,引用位置填写=GET.WORKBOOK(1)&T(NOW()),再在单元格内写=INDEX(GetSheetList,ROW())才是合法用法,直接写在单元格中本身就会触发无效报错。
  • 确认文件保存格式合规:不要手动修改文件后缀名,必须通过「另存为→Excel 启用宏的工作簿(*.xlsm)」的官方路径保存,手动改后缀不会触发Excel的宏支持逻辑,重开就会失效。

定向故障修复

  • 清理名称管理器冲突项:打开「公式→名称管理器」,删除所有报错、引用位置无效的冗余自定义名称,再重新封装GET.WORKBOOK的调用逻辑,避免旧错误定义干扰正常调用。
  • 开启XLM宏单独权限:Office 2021/365版本默认会单独阻断未签名的XLM宏,哪怕设置了受信任位置也可能拦截,操作路径为「信任中心→信任中心设置→宏设置→勾选启用Excel 4.0(XLM)宏」,保存设置后重启Excel再打开文件测试。
  • 解除文件安全锁定:如果文件是从网络/其他设备传输过来的,右键点击文件→属性→常规选项卡底部如果有「解除锁定」的勾选框,勾选后确认即可,系统给跨设备文件添加的安全标记会强制禁用宏功能,不受受信任位置规则限制。

永久规避方案

如果上述操作都无法解决问题,可以用VBA实现完全相同的功能,规避XLM宏的兼容和安全限制,示例代码如下,放入模块后即可直接在单元格调用:

Function GetAllSheetNames() As Variant
    Dim sheetArr() As String
    ReDim sheetArr(1 To ThisWorkbook.Sheets.Count)
    Dim i As Integer
    For i = 1 To ThisWorkbook.Sheets.Count
        sheetArr(i) = ThisWorkbook.Sheets(i).Name
    Next i
    GetAllSheetNames = sheetArr
End Function

单元格调用时输入=INDEX(GetAllSheetNames(),ROW())即可,功能和GET.WORKBOOK(1)完全一致,不会出现重开失效的问题。

内容的提问来源于stack exchange,提问作者Tristan Iriks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:15:04