有没有办法让VBA在不使用CMD的情况下从Windows用户帐户获取当前用户的全名?

问题描述 投票:0回答:1

有没有办法让 VBA 在不使用 CMD 的情况下从 Windows 用户帐户获取当前用户的全名?

我有一个团队,他们都在 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
excel vba windows active-directory
1个回答
0
投票

由于您使用的是 Excel,也许可以使用

Application.UserName
:

Worksheets("Front Cover").Range(nextUserCell).Value = Application.UserName
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.