共用方式為


從 Visual Basic 應用程式進行 Outlook 的自動化

因為 Microsoft Outlook 支援自動化,所以您可以從任何使用 Microsoft Visual Basic 撰寫的程式控制 Outlook。 自動化的功能是一種標準化的方法,可讓應用程式存取其他支援自動化功能之應用程式的物件、方法、屬性及事件。

Outlook 物件模型提供操作儲存在 Outlook 資料夾中之資料所需的所有功能,並可讓您控制 Outlook 使用者介面的許多層面, (UI) 。

若要啟動 Outlook 自動化工作階段,可以使用早期或晚期繫結。 晚期繫結會使用 Visual Basic 的 GetObject 函數或 CreateObject 函數,來初始化 Outlook。 例如,下列程式碼會將物件變數設定 為 Outlook Application 物件,這是 Outlook 物件模型中的最高層級物件。 所有的自動化程式碼都必須先定義一個 Outlook Application 物件,才能存取其他的 Outlook 物件。

Dim objOL as Object 
Set objOL = CreateObject("Outlook.Application")

若要使用早期系結,您必須先設定 Outlook 物件程式庫的參考。 使用 [Visual Basic for Applications (VBA) 工具] 功能表上的 [參考] 命令,即可設定 Microsoft Outlook xx.x 物件庫的參考,其中 xx.x 代表您正在使用的 Outlook 版本。 然後,您可以使用下列語法來啟動 Outlook 會話。

Dim objOL as Outlook.Application 
Set objOL = New Outlook.Application

大部分的程式設計解決方案都會與 Outlook 中儲存的資料互動。 Outlook 會將其所有資訊儲存為資料夾中的專案。 資料夾包含在一或多個存放區中。 將物件變數設定 為 Outlook Application 物件之後,您通常會將 NameSpace 物件設定為參照 MAPI,如下列範例所示。

Set objOL = New Outlook.Application 
Set objNS = objOL.GetNameSpace("MAPI") 
Set objFolder = objNS.GetDefaultFolder(olFolderContacts)

將物件變數設定為參照包括要使用之項目的資料夾後,可以用適當的程式碼完成工作,如下面範例所示。

Sub CreateNewDefaultOutlookTask() 
    Dim objOLApp As Outlook.Application 
    Dim NewTask As Outlook.TaskItem 
    ' Set the Application object 
    Set objOLApp = New Outlook.Application 
    ' You can only use CreateItem for default items 
    Set NewTask = objOLApp.CreateItem(olTaskItem) 
    ' Display the new task form so the user can fill it out 
    NewTask.Display 
End Sub

如果是使用 VBA 建立巨集,有兩種方式可以自動化 Outlook。 您可以實作一個巨集,來建立新的 Outlook Application 物件執行個體。 上面的 CreateNewDefaultOutlookTask() 方法顯示如何呼叫 New Outlook.Application 來建立新的 Application 物件執行個體。

謹慎 這個新的 Outlook 實例不受信任,而且可以觸發物件模型防護。

除了建立並自動化 Outlook 的個別執行個體之外,另一個方法是使用 VBA 來實作巨集,以自動化目前的 Outlook 執行個體。 若要這麼做,請使用環境內建的 Application 物件。 此 Application 物件受到信任,因此可以避免觸發物件模型保護。 如需物件模型保護的詳細資訊,請參閱為 Outlook 2007 開發人員提供的新增功能 (二部曲的第一部)。 下列範例顯示 CreateAnotherNewDefaultOutlookTask() 使用來自目前 Outlook 實例之 Application 物件的方法。

Sub CreateAnotherNewDefaultOutlookTask() 
    Dim NewTask As Outlook.TaskItem 
 
    ' You can only use CreateItem for default items 
    Set NewTask = Application.CreateItem(olTaskItem) 
    ' Display the new task form so the user can fill it out 
    NewTask.Display 
End Sub

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應