如何通过Excel VBA限制/禁用共享工作簿的Remove User选项仅本人可操作
适配Office 2016共享工作簿限制Remove User权限方案
Excel原生没有直接限制「移除共享用户」功能的配置项,你可以通过VBA结合内置命令劫持实现仅你本人可操作该功能,逻辑和你已有的「禁用另存为」代码兼容,仅作用于当前工作簿,不会修改其他用户的本地Excel配置。
实现步骤
1. 新增管理员权限校验函数
打开工作簿的VBA编辑器,插入一个标准模块,粘贴以下代码:
' 管理员白名单校验函数 Function IsOwner() As Boolean ' 将引号内的内容替换为你自己的Windows用户名,也可替换为Application.UserName匹配Excel登录账号 IsOwner = (Environ("USERNAME") = "你的实际用户名") End Function
2. 拦截Remove User内置命令
在ThisWorkbook模块中粘贴以下代码,劫持移除共享用户对应的Excel内置操作,非管理员触发时直接拦截:
Private Sub Workbook_Open() ' 工作簿打开时绑定命令拦截规则 Application.CommandBars("Review").Controls("共享工作簿").OnAction = "CheckPermissionForShare" ' 适配右键菜单中的移除用户选项 On Error Resume Next Application.CommandBars("Cell").Controls("移除用户").Enabled = IsOwner On Error GoTo 0 End Sub Sub CheckPermissionForShare() If Not IsOwner Then MsgBox "仅工作簿所有者可管理共享用户权限", vbExclamation Exit Sub End If ' 是管理员则正常打开共享用户管理面板 Application.Dialogs(xlDialogSharedWorkspace).Show End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) ' 关闭工作簿时恢复默认设置,避免影响其他Excel文档 On Error Resume Next Application.CommandBars("Review").Controls("共享工作簿").OnAction = "" Application.CommandBars("Cell").Controls("移除用户").Enabled = True On Error GoTo 0 End Sub
3. 生效说明
- 所有用户打开本工作簿时需要启用宏,规则才会生效,你可以对工作簿进行数字签名,避免宏被Excel默认拦截
- 如果需要更彻底的功能区按钮禁用,可以使用Custom UI Editor工具修改工作簿的功能区配置,将「移除用户」按钮的
Enabled属性绑定到IsOwner函数,非管理员打开时该按钮直接显示为灰色不可点击状态 - 本逻辑仅拦截本工作簿内的共享用户移除操作,不会限制用户在其他工作簿的操作,符合你的需求
内容的提问来源于stack exchange,提问作者Leedo
相关产品推荐
相关产品推荐

