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

如何通过VBA获取Excel共享工作簿的当前协作用户列表?

获取共享Excel工作簿的所有活跃用户列表

背景

团队文档库站点中有一个Excel共享工作簿,需要通过VBA按需获取当前打开该工作簿的用户列表。

问题

使用常规VBA代码仅能获取执行代码的用户,无法获取所有打开该工作簿的活跃用户。

尝试过的代码

Sub getListUsingUsers()
    Users = ActiveWorkbook.UserStatus
    For i = LBound(Users, 1) To UBound(Users, 1)
        Debug.Print Users(i, 1)
    Next
End Sub

解决方案

ActiveWorkbook.UserStatus属性本身就是用来返回共享工作簿中所有当前用户的信息数组,出现仅显示自身的情况,可从以下几点排查解决:

  • 确认工作簿处于共享状态:通过审阅 > 共享工作簿检查,确保勾选“允许多用户同时编辑,同时允许工作簿合并”选项,保存后重新打开工作簿再测试代码。
  • 处理缓存延迟:共享工作簿的用户状态可能存在缓存同步滞后,可手动刷新工作簿(按Ctrl+Alt+F5)后执行代码,或者在代码中加入刷新逻辑:
    Sub getActiveUsers()
        ' 刷新共享工作簿数据
        ActiveWorkbook.RefreshAll
        ' 获取用户状态数组
        Dim users As Variant
        users = ActiveWorkbook.UserStatus
        
        ' 遍历输出所有用户及相关信息
        Dim i As Integer
        For i = LBound(users, 1) To UBound(users, 1)
            Debug.Print "用户名:" & users(i, 1) & ",最后更新时间:" & users(i, 2) & ",状态:" & users(i, 3)
        Next i
    End Sub
    
  • 检查权限设置:确认执行代码的用户拥有查看共享用户列表的权限,部分文档库的权限配置可能限制该信息获取,需联系管理员核实。

补充说明:UserStatus返回的数组包含三个维度的信息,分别是用户名、用户最后更新时间、当前编辑状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:12:05