Visual Basic を使用して Outlook をカスタマイズおよび拡張します。 Outlook を制御する方法には、Visual Basic for Applications でマクロを記述する、VBScript でユーザー設定フォームを作成する、Visual Basic その他の言語でアドインを開発する、などがあります。 目的に合わせていずれの言語を使うか選択してください。
Visual Basic は、スタンドアロン アプリケーションや他のアプリケーションを拡張するダイナミックリンク ライブラリ (DLL) の作成など、さまざまな処理が可能なプログラミング言語です。 VBA は、Visual Basic のサブセットで、アプリケーション内で実行されてアプリケーションの機能を拡張します。 VBScript は Visual Basic for Applications を簡単にしたもので、Outlook アイテムの中で実行されます。 いずれのプログラミング言語も、Outlook オブジェクト モデルを使って Outlook を制御します。
Outlook オブジェクト モデルの詳細についてはここをクリックしてください。
Outlook で保存されるデータにアクセスしたり、Outlook を使ってメッセージを送受信したりする別のアプリケーションを作成する場合は、Visual Basic でアプリケーションを作成します。 C++ などの他のプログラミング言語を使用して、Outlook オブジェクト モデルで Outlook を制御することもできます。 また、Outlook を COM アドインのように拡張できる DLL を作成することができます。 COM アドインの 1 つのアプリケーションで、フォーム領域をプログラムし、ユーザー設定フォームを作成することができます。
Visual Basic for Applicationsは、他のアプリケーション (Microsoft Excel や Microsoft Word など) でVisual Basic for Applicationsを使用して Outlook を自動化するか、Outlook 内のVisual Basic for Applicationsを使用して Outlook を制御する方法のいずれかで使用します. ほとんどの場合、ユーザーが別のアプリケーションを使用していて、Outlook を使用してメッセージを送信したり、Outlook に格納されている情報にアクセスしたりする機能をユーザーに提供する場合は、Outlook オブジェクト モデルを使用して Outlook を制御するVisual Basic for Applicationsプログラムをそのアプリケーションに記述します。 一方、Outlook の動作をカスタマイズする Visual Basic コード (マクロなど) を記述する場合は、Outlook 内でVisual Basic for Applicationsを使用します。
アドインを使用してカスタム フォームのフォーム領域を拡張できる一方で、カスタム フォームのフォーム ページの機能は VBScript を使って拡張できます。 VBScript のプログラムは、フォームに保存されています。 プログラムのコードがフォームに格納されているため、コードはアイテムと共に他のユーザーに送られます。 フォーム ページまたはフォーム領域を使用してフォームをカスタマイズするかどうかの考慮事項以外に、使用する Visual Basic プログラミング言語の種類を選択する際のもう 1 つの重要な考慮事項は、プログラムが応答するイベントの種類です。
VBScript のコードは特定のアイテムに関連付けられているため、特定のアイテムが開かれたり、フィールドの値が変更された場合など、VBScript を使って特定のアイテムのイベントに応答するコードを記述することは簡単です。 アプリケーション、Windows エクスプローラー、フォルダー、またはすべてのアイテムで発生するイベントに応答するプログラムを作成する場合は、Visual Basic または VBA を使ってプログラムを記述してください。
VBA 用に記述したコードは、そのままでは VBScript 上で動作しないことがあります。 たとえば VBA のコードに含まれるすべての組み込み定数は、VBScript 上ではリテラル文字列に書き直す必要があります。 また、VBScript ではバリアント型 (Variant ) のデータ型だけ使用できます。 VBScript の定数および変数の詳細についてはここをクリックしてください。 Outlook Visual Basic for Applications と VBScript では、Application オブジェクトを取得するために CreateObject または GetObject を呼び出す必要はありません。 たとえば、次のコードを実行するとタスクフォルダーが開きます。
Set olMAPI = Application.GetNameSpace("MAPI")
olMAPI.GetDefaultFolder(13).Display
他のアプリケーションの Visual Basic または Visual Basic for Applications では、次のようなコードで、明示的に Application オブジェクトを作成する必要があります。
Set myOlApp = CreateObject("Outlook.Application")
Set olMAPI = myOlApp.GetNameSpace("MAPI")
olMAPI.GetDefaultFolder(olFolderTasks).Display
あるいは、アドインの OnConnection イベントに渡される Application オブジェクトを使います。
メモCreateObject メソッドの呼び出しから返された Application オブジェクトとその下位オブジェクト、プロパティ、およびメソッドは信頼されません。 COM アドインで信頼できる Application オブジェクトを使う方法の詳細については、「Outlook オブジェクト モデルのセキュリティの基本動作」を参照してください。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。