如何在 Excel 中获取登录用户的电子邮件地址

Posted

技术标签:

【中文标题】如何在 Excel 中获取登录用户的电子邮件地址【英文标题】:How to get logged user's email address in Excel 【发布时间】:2020-08-03 08:59:37 【问题描述】:

我尝试通过当前登录用户的 Excel VBA 获取邮件地址(不使用 Outlook)。

我可以得到

Application.UserName

但这还不够。

Excel下有邮件地址->文件->“属于:Mail@address.com”下的账户

有没有办法用 VBA 提取它?

【问题讨论】:

【参考方案1】:

恐怕没有 Outlook,这是不可能的...如果讨论中的用户安装并配置了 Outlook,您可以使用下一个代码获得它。代码需要引用“Microsoft Outlook ...对象库”:

Sub ActiveUserMailAddress()
  Dim objOutlook As New Outlook.Application
  Debug.Print objOutlook.GetNamespace("MAPI").CurrentUser.Address
End Sub

为了添加参考:在VBE,转到工具 -> 参考... -> 向下滚动直到看到上面推荐的参考,检查它并按OK

【讨论】:

(不使用 Outlook) ^^ • 但无论如何我认为这是唯一的可能性。 @Pᴇʜ:我没有明确强调这是唯一的可能性......我会尝试这样做。谢谢! 上面的代码可能不会提供 OP 正在寻找的信息。代码将给出第一个(默认)帐户,这可能与 Excel 中使用的帐户不同。另一方面,我也不知道如何检索 Excel-> 文件中所述的电子邮件帐户...。我在注册表中找到了电子邮件帐户,但我不确定这是否可靠。 这里有一些信息:techcommunity.microsoft.com/t5/access/…,但我不知道要添加哪个引用,所以可以使用System.DirectoryServices.AccountManagement.UserPrincipal 或者它可能在注册表中的某个地方?【参考方案2】:

我找到了优雅的解决方案。可能不能保证 excel 用户,但非常适合我。

Sub getUserMail()
    Debug.Print CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\Identity\ADUserName")
End Sub

感谢@Storax 获取注册表项,并回答如何轻松读取注册表。 Read and write from/to registry in VBA

【讨论】:

以上是关于如何在 Excel 中获取登录用户的电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 的 Swift iOS 中使用 FBSDK 获取用户电子邮件地址?

如何在 ASP.NET 中获取登录用户信息

春季安全。如何获取用户电子邮件地址?

如何根据 Windows 登录名使用 VBA 获取电子邮件地址?

如何使用同一登录页面处理两个不同用户的登录

如何在 laravel 5.2 后同时获取电子邮件和密码