Outlook には、プロパティの値を設定するためのいくつかの方法が用意されています。
Object.Property | UserProperty.Value | ItemProperty.Value | PropertyAccessor.SetProperty | PropertyAccessor.SetProperties | |
---|---|---|---|---|---|
操作 | 指定された明示的な組み込みのプロパティの値を設定します。 | 指定した値を持つカスタム項目レベルのプロパティを設定します。 プロパティが存在しない場合、値を設定すると "オブジェクト型の変数または With ブロックの変数は設定されていません" というエラーが発生します。 | プロパティが読み取り専用またはブロックされたプロパティでない場合は、指定された値を持つ組み込みまたはカスタム項目レベルのプロパティを設定します。 プロパティが存在しない場合は実行時エラーが発生します。 | 読み取り専用プロパティまたはブロックされたプロパティでない限り、SchemaName で指定されたプロパティに value を設定します。 プロパティが存在せず、プロバイダーと親オブジェクトがプロパティの作成をサポートしていて、 プロパティに有効なスキーマ名が指定されている場合は、 SetProperty によって プロパティが作成されます。 | 読み取り専用プロパティまたはブロックされたプロパティでない限り、SchemaNames のプロパティごとに、Values 配列の該当する値を設定します。 プロパティが既に存在していない場合、SetProperty 列で説明したプロパティ作成が行われることがあります。 2 つの配列 SchemaNames と Values のサイズが一致しない場合、 SetProperties は無効な引数エラーを返します。 |
該当するオブジェクト | Outlook オブジェクト モデルのすべてのオブジェクト。 | Office ドキュメント アイテム (DocumentItem オブジェクト) を除くすべての Outlook アイテム オブジェクト。 | Office ドキュメント アイテム (DocumentItem オブジェクト) を除くすべての Outlook アイテム オブジェクト。 | ItemProperty を使用して、明示的な組み込み項目レベルのプロパティを設定します。 DocumentItem プロパティ、明示的な名前のないアイテム レベルのプロパティ、カスタム プロパティ、または AddressEntry、AddressList、Attachment、ExchangeDistributionList、ExchangeUser、Folder、Recipient、Store のいずれかのオブジェクトのプロパティには SetProperty を使用します。 | SetProperty 列の説明と同じオブジェクト。 |
プロパティ型の一致 | Outlook オブジェクト モデルの説明と同じです。 | 値がプロパティの種類と一致しない場合、実行時エラーが発生します。 | 値がプロパティの種類と一致しない場合、実行時エラーが発生します。 | SchemaName が MAPI プロップタグ名前空間を使用し、Value がプロパティ タグによって示されるプロパティの種類と一致しない場合、SetProperty は型の不一致ランタイム エラーを返します。 SchemaName が MAPI 文字列名前空間を使用する場合、SetProperty はプロパティ型に一致するように型を強制しようとします。 型強制が失敗した場合、 SetProperty は型の不一致ランタイム エラーを返します。 PropertyAccessor では、特定の MAPI プロパティ型 (たとえば、PT_OBJECT) がサポートされていないため、このような型のプロパティの値を設定しようとすると、"Property operation not supported" エラーが返されます。 | プロパティの種類の一致は、SetProperty の場合と同様に、SchemaNames の各プロパティが Values 配列の値の種類と一致している必要があります。 種類の不一致を含むすべてのエラーは、Errors 配列に格納されます。 |
プロパティ変更イベント | アイテム レベルの組み込みプロパティが変更されると、PropertyChange イベントが発生します。 | CustomPropertyChange イベントは、カスタム項目レベルのプロパティの値が変更されたときに発生します。 | アイテム レベルの組み込みプロパティが変更されると、PropertyChange イベントが発生します。 CustomPropertyChange イベントは、カスタム プロパティがアイテムの UserProperties コレクション内にある場合に、カスタム項目レベルのプロパティの値が変更されたときに発生します。 PropertyAccessor.SetProperty または PropertyAccessor.SetProperties によって暗黙的に追加された項目レベルのプロパティは、アイテムの UserProperties コレクションの一部になることはありません。 | アイテム レベルでないプロパティを変更しても、イベントは発生しません。 項目レベルのプロパティを変更すると、 ItemProperty.Value 列に記載されているのと同じイベントが発生します。 SetProperty または SetProperties によって暗黙的に追加されたアイテム レベルのプロパティは、アイテムの UserProperties コレクションに自動的に含まれないことに注意してください。 CustomPropertyChange イベントがプロパティの変更時に発生するように、 プロパティを含めるには、明示的な UserProperties.Add が必要です。 | 値を変更すると、SchemaNames 配列のプロパティごとに、SetProperty 列の説明のように状況に応じてイベントが発生することがあります。 |
セキュリティ | セキュリティの制限はありません。 | 信頼されたコードと信頼されていないコードでは、 UserProperty を使用できます。 | 信頼されたコードと信頼されていないコードでは 、ItemProperty を使用できます。 | 適切に設定されたウイルス対策ソフトウェアがないクライアント コンピューターでは、アイテム オブジェクトの PropertyAccessor プロパティにアクセスしようとする信頼されていないコードは、既定でアドレス帳のセキュリティ警告を呼び出します。 | SetProperty 列と同じセキュリティ警告が発生します。 |
パフォーマンス | パフォーマンスのオーバーヘッドはありません。 明示的に組み込まれているプロパティに対しては、いつでもこのオブジェクトを使用できます。 | パフォーマンスのオーバーヘッドはありません。 アイテム レベルのカスタム プロパティに対しては、いつでもこのオブジェクトを使用できます。 | パフォーマンスのオーバーヘッドはありません。 アイテム レベルの名前付きプロパティに対しては、いつでもこのオブジェクトを使用できます。 | PropertyAccessor を使用してプロパティにアクセスすると、パフォーマンスへのオーバーヘッドが発生します。 複数のプロパティを設定するには、SetProperty を繰り返す代わりに SetProperties を使用します。 | PropertyAccessor を使用してプロパティにアクセスすると、パフォーマンスへのオーバーヘッドが発生します。 複数のプロパティを設定するには、SetProperty を繰り返す代わりに SetProperties を使用します。 |
注釈
Value プロパティは ItemProperty オブジェクトと UserProperty オブジェクトの既定のプロパティであるため、プロパティの値を参照するときに、必ずしも Value プロパティを明示的に指定する必要はありません。
同様に、 Find メソッドは ItemProperties および UserProperties の既定のメソッドです。 プロパティの値を参照するときに、必ずしも Find メソッドを指定する必要はありません。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。