【发布时间】:2016-02-13 15:50:51
【问题描述】:
有没有办法使用代码来检测 Outlook 是否会自动抓取现有的 Outlook 实例而不是启动新的 Outlook 实例? (最好是 VBA 代码。)理想情况下,还有一种以编程方式打开/关闭此行为的方法。
此处的目标是针对一组 Outlook 帐户中的数据同时运行多个进程,因为某些 Outlook 进程可能需要很长时间。然后,长时间进程可以继续使用一个实例,而其他短期进程则在另一个实例中开始和完成。当然,需要注意确保进程使用正确的 Outlook 实例,并且一个实例所做的更改不会影响另一个实例的行为。
默认情况下,在启动 Outlook 2013 或 2010 时,它们会自动以确保只有一个 Outlook 实例运行的状态启动。即使您使用这样的 VBA 代码也是如此:Set appOl = CreateObject(Class:="Outlook.Application")
根据http://amal.net/?p=2190 (2009) 和http://www.nextofwindows.com/opening-multiple-instances-of-outlook-on-windows(不确定日期)之类的帖子,此行为是通过在安装 Outlook 时创建的默认 Outlook 启动快捷方式中使用 /recycle 开关来指定的。删除该开关应防止该行为并允许创建多个 Outlook 实例。然而,安装 Outlook 2010(在 Vista64 主机上)和 Outlook 2013(在 Windows 10 主机上)的行为都好像存在 /recycle 开关,即使它们的 Outlook 启动快捷方式不 包括任何 /recycle 参数。
如果有一种方法可以检测并希望改变 Outlook 的行为方式,这样的代码可用于在启动长时间运行的进程时创建一个额外的 Outlook 实例,并在它完成时退出新的 Outlook 实例:
' Detect whether a New Outlook instance can be created &
' set the value of NewOutlookInstanceIsPossible to True/False
If NewOutlookInstanceIsPossible Then
Set appOl = VBA.CreateObject(Class:="Outlook.application") 'New instance
End If
' .... Code that does something using AppOl
If NewOutlookInstanceIsPossible Then appOl.Quit 'Quit new instance`
【问题讨论】: