如何使用VBA移除共享工作簿中除自身外的所有用户访问权限
问题根因
- 原代码没有过滤当前操作的用户,Office共享工作簿机制不允许移除正在访问文件的账号自身,因此触发权限类报错
- 采用正序遍历用户列表的逻辑有缺陷:每成功移除1个用户后,剩余在列表中的用户索引会自动向前偏移,会引发漏删、错删的问题
修正后代码
Sub Remove_All_Users() Dim UsrList() Dim i As Long Dim currentUser As String ' 获取当前登录用户名 currentUser = Application.UserName ' 获取当前共享工作簿的所有在线用户列表 UsrList = ThisWorkbook.UserStatus ' 空列表直接退出,避免报错 If UBound(UsrList) < 1 Then Exit Sub ' 倒序遍历,避免索引偏移导致的问题 For i = UBound(UsrList) To 1 Step -1 ' 跳过当前用户,只移除其他用户 If UsrList(i, 1) <> currentUser Then ThisWorkbook.RemoveUser i End If Next End Sub
注意事项
- 运行代码前请确认工作簿已开启共享功能,且你的账号拥有该工作簿的管理员操作权限
- 若其他用户有未保存的编辑内容,被强制移除后未保存的修改会丢失,建议提前通知相关用户手动保存退出
内容的提问来源于stack exchange,提问作者Leedo
相关产品推荐
相关产品推荐

