次の方法で共有


キーワードのプロパティを比較してアイテムをフィルターにかける

以下の説明では例として Categories プロパティを使用していますが、複数値を持つ任意の文字列プロパティにも同じことが当てはまります。

項目の Categories プロパティは、複数の 値を含 めることができるキーワード型です。 When being compared to a comparison string in a filter, the Categories property behaves like a text string where values are separated by a comma and a space. This is true for filters using Microsoft Jet syntax or DAV Searching and Locating (DASL) syntax.

Jet クエリ

Jet クエリでは、キーワード プロパティに関する語句一致のみを実行できます。 Jet クエリで前方一致またはサブ文字列の一致を実行することはできません。 たとえば、 Table.Restrict に次の条件を指定するとします。

string filter  = "[Categories] = 'Partner'"

この Jet クエリでは、 Categories プロパティで Partner の語句一致が見つかるアイテムの行が返されます。 Partner として分類されているアイテム、 Partner および Important として分類されているアイテム、および Tier1 Partner として分類されているアイテムが返されます。 Partnership としてのみ分類されているアイテムは返されません。

DASL クエリ

Jet クエリ構文を使用する場合のキーワードの制約を回避するには、前方一致またはサブ文字列一致の条件を指定できる DASL 構文を使用します。 次の条件文字列は、カテゴリ内の単語の 1 つとして、カテゴリパートナーシップなどのカテゴリ内の単語の先頭部分として、Partner を含むすべての項目を検索します。

criteria = "@SQL=" & Chr(34) _ 
& "urn:schemas-microsoft-com:office:office#Keywords" _ 
& Chr(34) & " ci_startswith 'Partner'"

DASL クエリを使用して、複数値を持つ文字列プロパティの等価一致を実行することもできます。 たとえば、次の 4 つの分類項目のうち 1 つ以上を持つアイテムがあるとします。

  • Book

  • My Book

  • Book Review

  • Bookish

等価一致の DASL クエリは次のようになります。

criteria = "@SQL=" & Chr(34) _ 
& "urn:schemas-microsoft-com:office:office#Keywords" & Chr(34) _ 
& " = 'Book'"

このクエリでは、分類項目として Book を持つアイテムがすべて返され、そこには Book を含めた複数の分類項目で分類されるアイテムも含まれます。 クエリは、 カテゴリとして Book を持たないアイテムを返しません。

複数値を持つプロパティが名前空間による参照を使用して Table に追加された場合、そのプロパティの値の形式は配列になります。 それぞれの値にアクセスするには、配列の要素を解析します。 直前の例でこの方法を使用すると、分類項目として Partner だけを含むアイテムを取得することもできます。

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

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