Outlookには「ユーザー設定フォーム」(Custom Forms)機能があり、メールやタスクといったアイテムを作成する際のユーザーインターフェイスをカスタマイズすることができます。
- Microsoft Outlook 2002 を使用したユーザー設定フォームの開発 (第 1 部)
- https://msdn.microsoft.com/ja-jp/library/aa155722.aspx
- Microsoft Outlook 2002 を使用したユーザー設定フォームの開発 (第 2 部)
- https://msdn.microsoft.com/ja-jp/library/aa155728.aspx
フォームにはフィールドを配置でき、ユーザー定義フィールドによって、任意の情報をアイテムに付加させることができます。
今回は、ユーザー設定フォームに基づいてメールを作成し、ユーザー定義フィールドの値を設定するマクロを紹介します。
メッセージ クラスの確認
マクロからユーザー設定フォームを取扱い際、まずはメッセージ クラスをフォームの選択画面で確認しておく必要があります。
VBAコード
ItemsオブジェクトのAddメソッドの引数にメッセージ クラスを指定することで、指定したユーザー設定フォームに基づいてメールを作成できます。
また、UserPropertyオブジェクトのValueプロパティを利用することで、ユーザー定義フィールドの値を設定することができます。
Public Sub Sample01() With Application.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts) 'メッセージ クラスを指定してアイテム作成 With .Items.Add("IPM.Note.CustomMessage") 'Outlook.MailItem .Subject = "テストメール" .Body = "あいうえお" & vbNewLine & "かきくけこ" 'UserPropertyオブジェクトのValueプロパティでユーザー定義フィールドの値を設定 .UserProperties("郵便番号").Value = "903-0815" .UserProperties("住所1").Value = "沖縄県那覇市首里金城町1-2-3" .UserProperties("住所2").Value = "テストビル10階" .Display End With End With End Sub
InspectorオブジェクトのModifiedFormPagesプロパティからPageオブジェクトを取得し、UserForm上のコントロールのようにフィールドを扱うこともできます。
Public Sub Sample02() Dim frm As Object With Application.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts) 'メッセージ クラスを指定してアイテム作成 With .Items.Add("IPM.Note.CustomMessage") 'Outlook.MailItem .Subject = "テストメール" .Body = "あいうえお" & vbNewLine & "かきくけこ" '「P.2」ページのコントロール操作 Set frm = .GetInspector.ModifiedFormPages("P.2") 'MSForms.UserForm frm.Controls("TextBox1").Value = "903-0815" frm.Controls("TextBox2").Value = "沖縄県那覇市首里金城町1-2-3" frm.Controls("TextBox3").Value = "テストビル10階" .Display End With End With End Sub
この記事へのコメントはありません。