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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 18:36:06