如果运行时超过单个代码 - VBA 的特定时间限制,请跳过一行



我创建一个表单,其中所有凭据都由访问它的任何人自动填充。但是,我在尝试获取用户的电子邮件地址时遇到困难。

Set olApp = CreateObject("Outlook.Application")
Set olNS = olApp.GetNamespace("MAPI")
UserEmail = olNS.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress

这一行可能需要某些用户的PC花费>1分钟,而在其他用户的PC上花费几秒钟。 例如,如果花费超过 5 秒,有没有办法跳过它?

我正在考虑按时申请应用程序,但不知道如何从那里开始。

VBA 不是为运行多线程调用而设计的。如果要优化 Outlook VBA 解决方案的性能,可以考虑改为创建 COM 加载项。有关详细信息,请参阅第 12 章:将 VBA 解决方案迁移到 VSTO。

在访问地址条目对象之前,我建议获取地址属性值。它返回一个字符串,表示收件人的电子邮件地址。如果它对应于SMTP地址,则可以跳过不必要的呼叫。

最新更新