多用户环境下XLSM文件VBA宏失效问题求助
XLSM多用户协作后宏触发异常问题
文件宏说明
该XLSM文件包含两类核心VBA事件宏:
- 启动触发的
Workbook_Open:取消隐藏指定工作表 - 关闭前触发的
Workbook_BeforeClose:隐藏对应工作表
宏代码如下:
Private Sub Workbook_Open() '取消隐藏部分工作表的代码 End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) '隐藏工作表的代码 End Sub
故障场景
用户A、B共同在SharePoint位置操作该文件:
- B退出时触发关闭宏,隐藏目标工作表
- A看到工作表隐藏后关闭文件
- 此后A再次打开该文件,所有宏完全无法触发,无任何警告提示;Excel VBA设置未改动,但自定义菜单栏可正常显示
已完成排查
- 将文件移至A的本地桌面,问题仍存在
- 新增工作表后发回A,A通过Windows资源管理器解锁宏,无效
- 含相同宏的签名锁定姊妹文件,在A的设备上可正常运行
- 用户B、C(本人)打开该文件时,宏均正常触发
- A当天上午打开该文件时,宏运行完全正常
- 反复检查A的VBA设置,无任何拦截项
解决建议
删除文件个人视图
操作路径:文件>信息>检查问题>检查个人信息>删除个人视图,完成后重新打开文件测试。重置VBA项目信任状态
打开文件后按Alt+F11进入VBA编辑器,右键点击该文件的VBA项目,选择属性>保护,取消锁定项目(若已勾选),保存后重新锁定,再让A重新打开文件。修复Excel程序
打开控制面板,找到Microsoft Office,选择更改>快速修复(或在线修复),修复完成后重启Excel再测试文件。修复文件损坏
将该文件另存为新XLSM文件,通过公式>名称管理器删除可能损坏的命名范围或隐藏名称,再发给A测试。
内容的提问来源于stack exchange,提问作者Koen Rijnsent
相关产品推荐
相关产品推荐

