有沒有辦法使用代碼來檢測Outlook是否會自動獲取現有的Outlook實例而不是啓動新的Outlook實例? (最好是VBA代碼。)理想情況下,還會有一種以編程方式打開/關閉此行爲的方式。檢測Outlook /回收狀態並運行Outlook的多個實例
這裏的目標是針對一組Outlook帳戶中的數據同時運行多個進程,因爲某些Outlook進程可能需要很長時間。然後持續時間較長的進程可以繼續使用一個實例,而其他持續時間較短的進程可以在另一個進程中啓動並完成。當然,需要注意確保流程使用正確的Outlook實例,並且一個實例所做的更改不會影響另一個實例的行爲。
默認情況下,啓動Outlook 2013或2010時,它們會自動啓動,以確保只有一個Outlook實例運行。
Set appOl = CreateObject(Class:="Outlook.Application")
根據像http://amal.net/?p=2190(2009年)和http://www.nextofwindows.com/opening-multiple-instances-of-outlook-on-windows(不確定的日期)是由默認的Outlook啓動使用/循環開關指定此行爲的帖子:即使您使用VBA代碼,這樣這是真的在安裝Outlook時創建的快捷方式。刪除交換機應防止行爲並允許創建多個Outlook實例。但是,儘管Outlook啓動快捷方式不包含包含任何/ recycle參數,但安裝的Outlook 2010(在Vista64主機上)和Outlook 2013(在Windows 10主機上)的行爲就像存在/ 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`
謝謝,迪米特里。我會看看我以前沒有遇到過的CDO。我看着Redemption,它看起來是一個相當大的套件,可以滿足我的需求。 –
[Microsoft state](https://support.microsoft.com/en-us/kb/2028411)如果當前安裝了Outlook 2007,則只能安裝最新的CDO 1.2.1 **和**,而如果您隨後進行升級,則可以與Outlook的更高版本一起使用,因爲大多數功能現在可用於較新的Outlook版本,因此不推薦使用此用法。正如您所說,Dimitry,似乎獲得該功能的唯一方法是直接或間接使用Extended MAPI。也許,我需要找到另一種達到目標的方式。感謝Dimitry Streblechencko。 –