次の方法で共有


Visual Basic アプリケーションからの Outlook の自動化

Microsoft Outlook はオートメーションをサポートしているので、Visual Basic で記述された任意のプログラムから Outlook を制御できます。 オートメーションはアプリケーションに対して、オートメーションをサポートする他のアプリケーションのオブジェクト、メソッド、プロパティ、およびイベントにアクセスするための標準的な方法を提供します。

Outlook オブジェクト モデルは、Outlook フォルダーに格納されているデータを操作するために必要なすべての機能を提供し、Outlook のユーザー インターフェイス (UI) のさまざまな要素を制御する機能を提供します。

To start an Outlook Automation session, you can use either early or late binding. 実行時バインディングは Outlook の初期化に Visual Basic GetObject 関数または CreateObject 関数を使用します。 たとえば、次のコードでは、Outlook オブジェクト モデルの最上位オブジェクトである Outlook Application オブジェクトにオブジェクト変数を設定します。 All Automation code must first define an Outlook Application object to be able to access any other Outlook objects.

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

事前バインディングを使用するには、まず、Outlook オブジェクト ライブラリへの参照を設定する必要があります。 Microsoft Outlook xx.x Object Library (xx.x は使用している Outlook のバージョンを表します) への参照を設定するには、Visual Basic for Applications (VBA) の [ツール] メニューの [参照設定] を使用します。 参照を設定したら、次の構文を使って Outlook セッションを開始できます。

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

Most programming solutions interact with the data stored in Outlook. Outlook stores all of its information as items in folders. Folders are contained in one or more stores. オブジェクト変数を Outlook Application オブジェクトに設定した後、次の例に示すように、通常、MAPI を参照するように NameSpace オブジェクトを設定します。

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 を使用してマクロを作成する場合、2 つの方法で Outlook を自動化できます。 Outlook の Application オブジェクトの新しいインスタンスを作成するマクロを実装できます。 前の CreateNewDefaultOutlookTask() メソッドは、 New Outlook.Application を呼び出して新しい Application オブジェクト インスタンスを作成する方法を示します。

注意 Outlook のこの新しいインスタンスは信頼されておらず、オブジェクト モデル ガードをトリガーできます。

Outlook の個別のインスタンスを作成して自動化する代わりに、VBA を使用して、Outlook の現在のインスタンスを自動化するマクロを実装できます。 そのためには、環境に組み込まれている Application オブジェクトを使用します。 この Application オブジェクトは信頼され、オブジェクト モデル ガードを呼び出さずに済みます。 オブジェクト モデル ガードの詳細については、「 What's New for Developers in Outlook 2007 (Part 1 of 2)」を参照してください。 次の例は、Outlook の CreateAnotherNewDefaultOutlookTask() 現在のインスタンスの 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 のサポートおよびフィードバックを参照してください。