【问题标题】:Excel VBA get (unique) ID of excel-userExcel VBA获取excel用户的(唯一)ID
【发布时间】:2018-10-29 06:00:16
【问题描述】:

我目前正在寻找一种方法来识别工作簿的用户 - 最好是通过连接到 Microsoft Excel 中的一些帐户信息。我找到了获取 Excel 用户名的以下行:

Application.UserName

但是这不是很“安全”(唯一),因为我希望确保只有一个人/用户可以使用该工作簿。只需在 excel 中更改用户名即可。

是否可以获取其他一些帐户信息?我更喜欢与 office/Excel 帐户一起使用的电子邮件,但是其他一些答案说它可能无法获得该值(??)。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您所说的“安全”是指独一无二的吗?试试

    Environ("username")
    

    Application Username 是 Excel Tools>Options 中设置的用户名

    Environ("username") 是您登录 Windows 时使用的用户名。

    【讨论】:

    • 这是一个很好的建议,但是我可能无法让用户说出他们的 Windows 用户名。您是否知道返回的用户名是否是电子邮件,例如在我(个人)使用电子邮件登录时的 Windows 10 中?
    • 当我调用 myName = Environ("username") 时,我得到了我的 nt 登录信息
    【解决方案2】:

    我花了一些时间寻找如何向发送帐户发送电子邮件(用于自我通知),并找到了答案,并进行了实验和探索,直到我发现以下内容适合我的目的:

    Outlook.Application.Session.CurrentUser.Address
    

    This answer推荐Application.Session.CurrentUser.AddressEntry.Address

    但是,如果您在代码中使用早期绑定,则需要添加对 Microsoft Outlook [version#] Object Library 的引用。


    另外,请注意,以上不返回可以与标准电子邮件格式的硬编码或输入值进行比较的值,即“myname@account.com” .


    但是,对于我的 Outlook 设置方式,我可以通过以下方式以字符串形式访问我的电子邮件地址:

    outlookApp.Session.Accounts(1).DisplayName
    

    不过,我要提醒的是,我也读到过这会产生意想不到的价值。它还基于列出的第一个帐户;这可能并不总是CurrentUser 的帐户,具体取决于(取决于?)。

    【讨论】:

    • 此技术是否还需要用户实际安装 Outlook 并登录/附加电子邮件帐户?
    • 是的,它会的。我认为这是原因,但在重读你的问题后,我意识到这不是......
    • @Chri.s 进行了实验,以下返回了我的电子邮件地址,但我没有机会在不同的情况下进行测试;这完全有可能发生返回正确的结果。 Environ("Username") & "@" & Replace(LCase(Environ("Userdnsdomain")), "corp.", "")
    • 不幸的是,它在我的计算机上不起作用,只返回了 username@ 没有域。
    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2015-10-19
    • 2014-01-30
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多