如何在 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 获取用户电子邮件地址?