如何调整VBA代码仅移除打开共享Workbook超2小时的用户
修改思路
ThisWorkbook.UserStatus返回的二维数组中,第二列UsrList(i, 2)存储的就是对应用户打开工作簿的时间,只需计算当前时间和该打开时间的差值,判断是否超过2小时即可。
调整后的完整代码
Sub Remove_Timed_Users_from_Shared_Workbook() Dim UsrList() Dim openHours As Double UsrList = ThisWorkbook.UserStatus For i = UBound(UsrList, 1) To 1 Step -1 ' 跳过当前操作用户本人 If UsrList(i, 1) <> Application.UserName Then ' 计算已打开时长,日期差值单位为天,乘以24换算为小时 openHours = (Now - UsrList(i, 2)) * 24 ' 仅移除打开时长超过2小时的用户 If openHours > 2 Then ThisWorkbook.RemoveUser i End If End If Next End Sub
补充说明
- 倒序遍历用户列表是为了避免移除用户后列表索引错位导致的漏判问题
- 如果需要调整移除的时长阈值,直接修改
openHours > 2中的数字即可 - 执行代码前请确认你拥有该共享工作簿的管理员权限,否则无法执行移除用户操作
内容的提问来源于stack exchange,提问作者Leedo
相关产品推荐
相关产品推荐

