我有一个团队,他们都在 Windows 计算机上协作处理 Excel 文件。我们在一个域中,但无法使用 OneDrive 进行协作。
为了帮助跟踪编辑,我编写了一些 VBA 来记录每次保存的时间戳和当前用户(如下)。
Environ("Username")
返回其 Windows 用户名,类似于 ID1234。我知道所有用户都配置为拥有与其用户帐户关联的全名,例如(公司)Flash Steel。
全名对于保存记录更有用。
我使用了之前的答案在CMD.exe中调用“网络用户”并解析SDTOUT。这可行,但我希望有更优雅的东西,并希望在 VBA 中本地调用。
' When saving, append the user ID and timestamp
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
...
Worksheets("Front Cover").Range(nextTimestampCell).Value = Format(Now(), "yy/mm/dd - HH:nn:ss")
' Build string for command
cMDcommand = "cmd /c net user """ & Environ("Username") & """ /DOMAIN | find /I ""Full name"""
' Execute command and read top line
result = Trim(CreateObject("Wscript.Shell").Exec(cMDcommand).StdOut.readline)
' Trim result and output User
Worksheets("Front Cover").Range(nextUserCell).Value = Right(result, Len(result) - 29)
End Sub
Application.UserName
:
Worksheets("Front Cover").Range(nextUserCell).Value = Application.UserName