VBA在OSX上获取用户名(或Mac替代Environ(“用户名”))

时间:2013-07-25 00:32:29

标签: macos vba excel-vba excel-2010 username

我的任务是创建一个安全的(Windows版本)Excel工作簿,该工作簿使用宏来验证用户是否有权查看内容。在Excel 2010 for Windows中,我使用Environ("username")函数来完成此操作。

我遇到的问题是组织中的某些用户使用Mac来完成日常工作,Environ不能与OSX一起使用。

有没有人知道找到Mac用户名的另一种方法?我看过网上但我能找到的是如何找到计算机的唯一标识符,而不是用户名。

我试图用Mac做什么呢?

感谢任何信息!

3 个答案:

答案 0 :(得分:3)

您可以使用AppleScript返回用户名并从VBA运行。

以下功能应该可以解决问题。

Function GetUserNameMac() As String
    Dim sMyScript As String

    sMyScript = "set userName to short user name of (system info)" & vbNewLine & "return userName"

    GetUserNameMac = MacScript(sMyScript)
End Function

答案 1 :(得分:2)

Environ("USER")Environ("LOGNAME")在Mac上返回与MacScript答案相同的内容。

答案 2 :(得分:0)

我刚刚在寻找与 Environ("COMPUTERNAME") 等效的 macOS 时发现了这个问题,因为我一直在使用它:

MacScript("do shell script ""hostname""")

如果您想获取所有三个常用用户 ID,则返回用户帐户名:

MacScript("do shell script ""stat -f$Su /dev/console""")

这将返回数字用户 ID,通常是 501:

MacScript("do shell script ""stat -f$Uu /dev/console""")

这将返回用户的真实姓名(如菜单栏中所示):

MacScript("do shell script ""id -P $(stat -f%Su /dev/console | cut -d : -f 8""")