如何获取使用特定共享工作簿的用户列表?

Eli*_*anA 3 excel vba excel-vba

我正在使用共享工作簿.有一个代码可以撤消WB的共享,更新工作表中的数据,然后再次共享WB.如果有用户连接到此WB,他们将无法保存在WB上,excel将要求他们以不同的名称保存WB.

我的问题是如何获取当前使用WB的用户列表?

通过这种方式,我可以设置一个msgbox,当有用户使用WB并保持WB共享时,该msgbox会发出警报.

谢谢

duD*_*uDE 6

尝试使用UserStatus属性[Excel 2003 VBA语言参考]:

返回基于1的二维数组,该数组提供有关将工作簿作为共享列表打开的每个用户的信息.第二个维度的第一个元素是用户的名称,第二个元素是用户上次打开工作簿的日期和时间,第三个元素是表示列表类型的数字(1表示独占,2表示共享).只读变体.

此示例创建一个新工作簿,并向其中插入有关将活动工作簿作为共享列表打开的所有用户的信息.

users = ActiveWorkbook.UserStatus
With Workbooks.Add.Sheets(1)
    For row = 1 To UBound(users, 1)
        .Cells(row, 1) = users(row, 1)
        .Cells(row, 2) = users(row, 2)
        Select Case users(row, 3)
            Case 1
                .Cells(row, 3).Value = "Exclusive"
            Case 2
                .Cells(row, 3).Value = "Shared"
        End Select
    Next
End With
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,效果很好!这就是我所做的:Users = ActiveWorkbook.UserStatus MsgBox UBound(Users) (2认同)

Eli*_*anA 5

Sub getListUsingUsers()
    Users = ActiveWorkbook.UserStatus
    MsgBox "Total Users using the current WorkBook: " & UBound(Users)
End Sub
Run Code Online (Sandbox Code Playgroud)

此代码为我提供了包含连接到 WB 的用户数量的消息框。

多谢,伙计