Share via


ユーザー定義フィールドをフィルターにかける

Microsoft Jet 構文または DAV Searching and Locating (DASL) 構文を使用すると、フィルターでカスタム プロパティを指定できます。 使用するカスタム プロパティは、フィルターの適用先となるフォルダーに定義しておく必要があります。 カスタム プロパティがアイテムにしか定義されていない場合、検索は失敗します。

Jet クエリ

カスタム プロパティのプロパティ名には、スペースが含まれている可能性があります。 Jet クエリでは、その場合も他のプロパティ名の参照と同様に、カスタム プロパティの名前を角かっこで囲むだけで参照できます。 たとえば、次の Jet クエリは、"Preferred Gift" というカスタム プロパティが "Diamonds" である連絡先をすべて取得します。 このクエリを正しく実行するためには、カスタム連絡先アイテムのあるフォルダーに "Preferred Gift" というカスタム プロパティを定義しておく必要があります。

criteria = "[Preferred Gift] = 'Diamonds'"

DASL クエリ

DASL クエリでは、カスタム プロパティの名前にスペースが含まれている場合、各スペースに Uniform Resource Locator (URL) エンコードを適用して、スペースを "%20" に置き換える必要があります。 通常、DASL クエリの中の文字には、URL の文字と同じように URL エンコードを適用します。

カスタム プロパティに対して DASL クエリを作成する場合は、次の形式で Outlook のカスタム プロパティの名前空間 GUID を使用する必要があります。

https://schemas.microsoft.com/mapi/string/{GUID}/PropertyName

{GUID} には次の GUID が入ります。

{00020329-0000-0000-C000-000000000046}

MAPI 文字列名前空間で参照されるカスタム プロパティのフィルター処理

フィルター処理するカスタム プロパティがフォルダーの UserDefinedProperties コレクションに存在せず、MAPI 文字列名前空間でカスタム プロパティを参照している場合は、カスタム プロパティの名前空間表現に型指定子を明示的に追加する必要があります。 Items コレクションと Table オブジェクトのエントリ ポイントを検索およびフィルター処理する DASL フィルターを適用する場合、および Application.AdvancedSearch メソッドにのみ型を指定する必要があることに注意してください。

メモ 六角形の型指定子は、9 ではなく 8 桁の 0000HHHHH 形式である必要があります。 さまざまな MAPI 型に対する 16 進の型指定子 (HHHH) の詳細については、「プロパティの種類」を参照してください。

たとえば、 Items.Restrict を使用して "MyProperty" という名前のカスタム Unicode 文字列プロパティを検索し、このプロパティがフォルダーの UserDefinedProperties コレクションに存在しない場合は、MAPI 文字列名前空間のプロパティの表現に Unicode 文字列型指定子 0000001f を追加する必要があります。

criteria = "@SQL=" & Chr$(34) & "https://schemas.microsoft.com/mapi/string/" _ 
& "{00020329-0000-0000-C000-000000000046}/MyProperty"_ 
& "/0000001f" & Chr(34) & " = '12-74440'" 

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。