【发布时间】:2018-04-24 01:50:22
【问题描述】:
我正在创建一个表单,其中所有凭据都由访问它的任何人自动填充。但是,我在尝试获取用户的电子邮件地址时遇到了困难。
Set olApp = CreateObject("Outlook.Application")
Set olNS = olApp.GetNamespace("MAPI")
UserEmail = olNS.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress
这一行可能会在某些用户的 PC 上占用超过 1 分钟,而在其他用户的 PC 上占用几秒钟。 例如,如果它需要超过 5 秒,有没有办法跳过它?
我正在考虑申请 application.ontime 但不知道如何从那里开始。
【问题讨论】:
-
你想要达到的不是微不足道的。通常,您的所有 VBA 代码都在单个线程中运行。这意味着每当任何功能卡住一段时间,您的整个代码执行都会停止。 This question is about asynchronous calls in VBA 基本上说:这是不可能的。因此,您要么需要找到一种方法来修改返回电子邮件地址的函数以提前返回。或者启动第二个 VBA 主机并让它为您检索地址。如果它没有及时提供,就继续没有它。
-
启动第二个 vba 主机的好主意。我试试看。