VBA - 打开工作簿的用户名(只读)

4
如果一个位于服务器上的工作簿处于只读模式,如何使用VBA显示活动用户名?我已经研究过`.WriteReservedBy`,但这仅显示最后使用密码保存文件的人的名称。

1
这看起来很有趣,快速搜索“VBA网络所有者”产生了通过Excel VBA获取文件所有者属性,似乎效果不错。我只是发布一个链接,因为任何答案都会在某种程度上涉嫌剽窃。 - user4039065
http://superuser.com/questions/845084/how-to-get-excel-to-show-username-of-person-that-has-file-open - Siddharth Rout
1个回答

1
这可能应该是一条评论,但我的声望太低了。
我看过这个,但从未需要这些信息...
尝试以下内容:
- ThisWorkbook.UserStatus - 包含打开文件的独占或共享状态下的所有当前用户的数组 - Environ("USERNAME") - CreateObject("WScript.NetWork").UserName - API 调用:

.

Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA"
( _
    ByVal lpName As String, _
    ByVal lpUserName As String, _
    lpnLength As Long
) As Long

Declare Function GetUserName& Lib "advapi32.dll" Alias "GetUserNameA" _ 
(ByVal lpBuffer As String, nSize As Long)

.

关于这些API的更多细节:



(注:该文本为HTML代码,已保留原样)
Public Function GetActiveUser(Optional ByVal computer As String = ".") As String
    Dim wmi As Object, itm As String

    On Error Resume Next
    Set wmi = GetObject("winmgmts:\\" & computer & "\Root\CIMv2")
    itm = wmi.ExecQuery("Select UserName from Win32_NetworkConnection", , 48)
    GetNetActiveUser = itm
End Function

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接