【发布时间】:2021-07-02 07:43:56
【问题描述】:
我在 Excel 中创建了一个 VBA 函数来识别当前用户的电子邮件地址。
Public Function UserName()
Dim OL, olAllUsers, oExchUser, oentry, myitem As Object
Dim User As String
Set OL = CreateObject("outlook.application")
Set olAllUsers = OL.Session.AddressLists.Item("All Users").AddressEntries
User = OL.Session.CurrentUser.Name
Set oentry = olAllUsers.Item(User)
Set oExchUser = oentry.GetExchangeUser()
UserName = oExchUser.PrimarySmtpAddress
End Function
对于大多数用户来说,这会显示他们的电子邮件地址(例如 john_doe@generic.com)。
对于某些它不会更新默认值,这是我自己的电子邮件,因为代码在我尝试时成功执行。
【问题讨论】:
-
如果地址条目已经是 SMTP 地址或分发列表,则 GetExchangeUser 将无法正确获取。这里的一些答案可能会有所帮助,尽管它需要从 Outlook 移植到 Excel 代码:stackoverflow.com/questions/12641704/…
-
其中一个链接似乎有一个基于 Excel 的答案:stackoverflow.com/questions/31161726/…
-
是的,看起来这正是问题所在。我在其中一个 cmets 中尝试了使用 Account.SmtpAddress 协议的模型,它似乎对所有受影响的用户都运行良好。非常感谢!