_Items.Restrict(String) _Items.Restrict(String) _Items.Restrict(String) Method

定義

Itemsコレクションにフィルターを適用し、フィルターに一致する元のすべてのアイテムを含む新しいコレクションを返します。Applies a filter to the Items collection, returning a new collection containing all of the items from the original that match the filter.

public:
 Microsoft::Office::Interop::Outlook::Items ^ Restrict(System::String ^ Filter);
public Microsoft.Office.Interop.Outlook.Items Restrict (string Filter);
Public Function Restrict (Filter As String) As Items

パラメーター

Filter
String String String

適用するフィルター文字列式。A filter string expression to be applied. 詳細についてはFind(String) 、メソッドを参照してください。For details, see the Find(String) method.

戻り値

フィルターに一致する元のitemsコレクションのアイテムを表すitemsコレクション。An Items collection that represents the items from the original Items collection which match the filter.

注釈

このメソッドは、 Find(String)メソッドまたはFindNext()メソッドを使用して、コレクション内の特定のアイテムを反復処理する方法とは別の方法です。This method is an alternative to using the Find(String) method or FindNext() method to iterate over specific items within a collection. アイテム数が少ない場合は、Find メソッドや FindNext メソッドの方が処理が速くなります。The Find or FindNext methods are faster than filtering if there are a small number of items. Restrict メソッドは、アイテム数が多くなるほど大幅に処理が速くなります。特に、大きなコレクション内で少数のアイテムを検索する場合に高速になります。The Restrict method is significantly faster if there is a large number of items in the collection, especially if only a few items in a large collection are expected to be found.

: Find句またはRestrict句の一部としてユーザー定義フィールドを使用している場合は、ユーザー定義フィールドがフォルダー内に存在している必要があります。 Note: If you are using user-defined fields as part of a Find or Restrict clause, the user-defined fields must exist in the folder. それ以外の場合は、そのフィールドが不明であることを示すエラーがコードによって生成されます。Otherwise the code will generate an error stating that the field is unknown. フォルダーを追加するには、[フィールドの選択] を表示して [新規] をクリックします。You can add a field to a folder by displaying the Field Chooser and clicking New.

このメソッドは、次のプロパティと共に使用することはできません (エラーが発生します)。This method cannot be used and will cause an error with the following properties:

BodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermissionBodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermissionLastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURLLastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURL

Find メソッドおよび Restrict メソッドのためのフィルターの作成Creating Filters for the Find and Restrict Methods

フィルターの構文は、フィルターを適用するフィールドの種類によって異なります。The syntax for the filter varies depending on the type of field you are filtering on.

文字列 (テキスト フィールドの場合)String (for Text fields)

テキストフィールドを検索する場合は、アポストロフィ (') または二重引用符 ("") のいずれかを使用して、フィルターの一部である値を区切ることができます。When searching Text fields, you can use either an apostrophe ('), or double quotation marks (""), to delimit the values that are part of the filter. たとえば、次のすべての行は、フィールドがstring型 (C# の場合はstring ) の場合に正しく機能します。For example, all of the following lines function correctly when the field is of type String (string in C#):

sFilter = "[CompanyName] = ' Microsoft '"sFilter = "[CompanyName] = 'Microsoft'"

sFilter = "[CompanyName] =" "Microsoft" ""sFilter = "[CompanyName] = ""Microsoft"""

sFilter = "[CompanyName] =" & chr (34) & "Microsoft" & Chr (34)sFilter = "[CompanyName] = " & Chr(34) & "Microsoft" & Chr(34)

Jet または DASL クエリでフィルターを指定するときに、フィルターに含める文字列の区切り文字として単一引用符のペアを使用しており、かつその文字列に別の単一引用符やアポストロフィが含まれている場合は、その単一引用符またはアポストロフィの前に、エスケープ文字として単一引用符を追加します。文字列の区切り文字として二重引用符を使用している場合も、同様に処理します。つまり、文字列に二重引用符が含まれている場合は、その二重引用符の前に、エスケープ文字として二重引用符を追加します。In specifying a filter in a Jet or DASL query, if you use a pair of single quotes to delimit a string that is part of the filter, and the string contains another single quote or apostrophe, then add a single quote as an escape character before the single quote or apostrophe. Use a similar approach if you use a pair of double quotes to delimit a string. If the string contains a double quote, then add a double quote as an escape character before the double quote.

たとえば、" Subject/件名" プロパティが word ではないことをフィルター処理する DASL フィルター文字列の場合、フィルター文字列全体は二重引用符のペアで区切られ、埋め込み文字列は1つの引用符で区切られません。For example, in the DASL filter string that filters for the Subject property being equal to the word can't, the entire filter string is delimited by a pair of double quotes, and the embedded string can't is delimited by a pair of single quotes. このフィルター文字列には、次のhttp://schemas.microsoft.com/mapi/proptag/0x0037001f3 つの文字をエスケープする必要があります。プロパティを参照するための開始二重引用符と終わり二重引用符。また、単語に対する値の条件にアポストロフィを使用することはできません。There are three characters that you need to escape in this filter string: the starting double quote and the ending double quote for the property reference of http://schemas.microsoft.com/mapi/proptag/0x0037001f, and the apostrophe in the value condition for the word can't. 適切なエスケープ文字を適用すると、フィルター文字列を次のように表すことができます。Applying the appropriate escape characters, you can express the filter string as follows:

filter = "@SQL=" "http://schemas.microsoft.com/mapi/proptag/0x0037001f" "= ' は ' ' できません"filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'can''t'"

chr(34) 関数を使用して、エスケープ文字として使用される二重引用符 (ASCII 文字値は 34) を表すこともできます。Alternatively, you can use the chr(34) function to represent the double quote (whose ASCII character value is 34) that is used as an escape character. 二重引用符のエスケープ文字の代わりに chr(34) を使用すると、最後の例を次のように表すことができます。Using the chr(34) substitution for a double-quote escape character, you can express the last example as follows:

filter = "@SQL=" & Chr (34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001f" _filter = "@SQL= " & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001f" _

&Chr (34) & "=" & "' は ' ' できません"& Chr(34) & " = " & "'can''t'"

DASL クエリを ci_startswith 演算子または ci_phrasematch 演算子と共に使用する場合も、単一引用符と二重引用符をエスケープする必要があります。Escaping single and double quote characters is also required for DASL queries with the ci_startswith or ci_phrasematch operators. たとえば、次のクエリは、メッセージの件名で can't の語句一致クエリを実行します。For example, the following query performs a phrase match query for can't in the message subject:

filter = "@SQL=" & Chr (34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001E" _filter = "@SQL=" & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001E" _

&Chr (34) & "ci_phrasematch" & "' ' は ' ' できません"& Chr(34) & " ci_phrasematch " & "'can''t'"

もう1つの例としては、" Subject/件名" プロパティが右の部分と等しい場合をフィルター処理する DASL フィルター文字列があります。この文字列は、単語が二重引用符で囲まれています。Another example is a DASL filter string that filters for the Subject property being equal to the words the right stuff, where the word stuff is enclosed by double quotes. この場合、次に示すように、末尾の二重引用符をエスケープする必要があります。In this case, you must escape the enclosing double quotes as follows:

filter = "@SQL=" "http://schemas.microsoft.com/mapi/proptag/0x0037001f" "= ' right" "": ""filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'the right ""stuff""'"

スペース、単一引用符、二重引用符、またはパーセント文字を含んでいる名前付きプロパティのプロパティ参照には、別のエスケープ規則のセットが適用されます。A different set of escaping rules apply to a property reference for named properties that contain the space, single quote, double quote, or percent character. 詳細については、「名前空間によってプロパティを参照する」を参照してください。For more information, see Referencing Properties by Namespace.

日付Date

日付と時刻は、通常、日付の書式で格納されますが、Find メソッドおよび Restrict メソッドでは、この書式を文字列の表記に変換する必要があります。Although dates and times are typically stored with a Date format, the Find and Restrict methods require that the date and time be converted to a string representation. Microsoft Outlook が必要とするとおりに日付が形式化されるようにするには、Format 関数を使用します。To make sure that the date is formatted as Microsoft Outlook expects, use the Format function. 次の例では、1999 年 1 月 15 日の午後 3 時 30 分より後に変更されたすべての連絡先を検索するフィルターを作成しています。The following example creates a filter to find all contacts that have been modified after January 15, 1999 at 3:30 P.M.

sFilter = "[LastModificationTime] > '" &形式 ("1/15/99 3: 30pm", "ddddd h:nn AMPM") & "'"sFilter = "[LastModificationTime] > '" & Format("1/15/99 3:30pm", "ddddd h:nn AMPM") & "'"

Boolean 演算子Boolean Operators

TRUE/FALSE、YES/NO、ON/OFF などのブール型 (Boolean) の値は、文字列に変換せずに処理する必要があります。たとえば、連絡先の履歴が有効になっているかどうかを確認するには、次のフィルターを使用します。Boolean operators, TRUE/FALSE, YES/NO, ON/OFF, and so on, should not be converted to a string. For example, to determine whether journaling is enabled for contacts, you can use this filter:

sFilter = "[ジャーナル] = True"sFilter = "[Journal] = True"

:ブール型 (Boolean)のフィールドで区切り文字として引用符を使用する場合、空の文字列は、フィールドがFalseであるアイテムを検索し、空ではないすべての文字列は、フィールドがTrueであるアイテムを検索します。 Note: If you use quotation marks as delimiters with Boolean fields, then an empty string will find items whose fields are False and all non-empty strings will find items whose fields are True.

キーワード (または Categories)Keywords (or Categories)

Categories フィールドは、複数の値を保持するように設計されたキーワード型です。The Categories field is of type keywords, which is designed to hold multiple values. プログラムでアクセスするときには、Categories フィールドはテキスト フィールドのように動作し、文字列は完全一致する必要があります。When accessing it programmatically, the Categories field behaves like a Text field, and the string must match exactly. テキスト文字列内の値は、コンマとスペースで区切られています。Values in the text string are separated by a comma and a space. つまり、一般に複数の値が含まれているキーワード フィールドには Find メソッドと Restrict メソッドが使用できないということです。This typically means that you cannot use the Find and Restrict methods on a keywords field if it contains more than one value. たとえば、Business のカテゴリに 1 つの連絡先があり、Business と Social のカテゴリに 1 つの連絡先がある場合は、Business のカテゴリに含まれるすべてのアイテムを取得するために、Find メソッドと Restrict メソッドを簡単に使用することはできません。For example, if you have one contact in the Business category and one contact in the Business and Social categories, you cannot easily use the Find and Restrict methods to retrieve all items that are in the Business category. その代わりに、フォルダー内のすべての連絡先をループ処理して、全体のキーワード フィールド内に文字列 "Business" が含まれているかどうかを Instr 関数でテストします。Instead, you can loop through all contacts in the folder and use the Instr function to test whether the string "Business" is contained within the entire keywords field.

: 例外として、Categories フィールドを2に制限するか、値の数を少なくすることをお勧めします。 Note: A possible exception is if you limit the Categories field to two, or a low number of values. その後、or の論理演算子を使用してFindメソッドおよびRestrictメソッドを使用すると、すべてのビジネス用連絡先を取得できます。Then you can use the Find and Restrict methods with the OR logical operator to retrieve all Business contacts. たとえば、"Business" OR "Business, Personal" OR "Personal, Business" のようにします (擬似コード)。For example (in pseudocode): "Business" OR "Business, Personal" OR "Personal, Business." Category の文字列は、大文字と小文字が区別されません。Category strings are not case sensitive.

整数Integer

整数型 ( Integer ) のフィールドを検索するには、区切り文字として引用符は使用しません。You can search for Integer fields with, or without quotation marks as delimiters. 次に示すのは、Outlook 2000 で作成した連絡先を取得するフィルターです。The following filters will find contacts that were created using Outlook 2000:

sFilter = "[outlookinternalversion] = 92711"sFilter = "[OutlookInternalVersion] = 92711"

sFilter = "[outlookinternalversion] = ' 92711 '"sFilter = "[OutlookInternalVersion] = '92711'"

フィルターの一部として変数を使用するUsing Variables as Part of the Filter

Restrict メソッドの例で示したように、フィルターには変数の値を使用することもできます。As the Restrict method example illustrates, you can use values from variables as part of the filter. 次の Microsoft Visual Basic のコード例は、フィルターの一部として変数を使用する構文を示しています。The following Microsoft Visual Basic code sample illustrates syntax that uses variables as part of the filter.

sfullname = "Dan Wilson"sFullName = "Dan Wilson"

' この方法では、値を区切るために Chr (34) を使用します。' This approach uses Chr(34) to delimit the value.

sFilter = "[FullName] =" & Chr (34) & sfullname & chr (34)sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34)

' この方法では、二重引用符を使用して値を区切ります。' This approach uses double quotation marks to delimit the value.

sFilter = "[FullName] =" "" & sfullname & "" ""sFilter = "[FullName] = """ & sFullName & """"

フィルターの一部として論理演算子を使用するUsing Logical Operators as Part of the Filter

論理演算子は、AND、OR、および NOT が使用可能です。Logical operators that are allowed are AND, OR, and NOT. 次に、複数の条件を指定できるように、 Restrictメソッドの句のバリエーションを示します。The following are variations of the clause for the Restrict method so you can specify multiple criteria.

OR: カテゴリが Business または Personal のすべての連絡先アイテムを返します。OR: The following code returns all contact items that have either Business or Personal as their category.

sFilter = "[カテゴリ] = ' Personal ' または [categories] = ' Business '"sFilter = "[Categories] = 'Personal' Or [Categories] = 'Business'"

AND: Microsoft で勤務している個人用連絡先をすべて取得します。AND: The following code retrieves all personal contacts who work at Microsoft.

sFilter = "[カテゴリ] = ' Personal ' および [CompanyName] = ' Microsoft '"sFilter = "[Categories] = 'Personal' And [CompanyName] = 'Microsoft'"

NOT: Microsoft に勤務していない個人用連絡先をすべて取得します。NOT: The following code retrieves all personal contacts who don't work at Microsoft.

sFilter = "[カテゴリ] = ' Personal ' および Not ([CompanyName] = ' Microsoft ')"sFilter = "[Categories] = 'Personal' And Not([CompanyName] = 'Microsoft')"

追加情報Additional Notes

ユーザー定義フィールドでFindメソッドまたはRestrictメソッドを使用しようとしている場合は、そのフィールドがフォルダー内に定義されている必要があります。それ以外の場合は、エラーが発生します。If you are trying to use the Find or Restrict methods with user-defined fields, the fields must be defined in the folder, otherwise an error will occur. 「含む」操作を実行する方法はありません。There is no way to perform a "contains" operation. たとえば、Subject フィールドに特定の語が含まれているアイテムを検索するために、Find または Restrict は使用できません。For example, you cannot use Find or Restrict to search for items that have a particular word in the Subject field. 代わりに、 AdvancedSearch(String, Object, Object, Object)メソッドを使用することも、フォルダー内のすべてのアイテムをループ処理して、 InStr関数を使用して、フィールド内で検索を実行することもできます。Instead, you can use the AdvancedSearch(String, Object, Object, Object) method, or you can loop through all of the items in the folder and use the InStr function to perform a search within a field. Restrict メソッドは、特定の範囲の文字で始まるアイテムの検索に使用できます。You can use the Restrict method to search for items that begin within a certain range of characters. たとえば、姓が文字 M で始まる連絡先のすべてを検索するには、次のフィルターを使用します。For example, to search for all contacts with a last name beginning with the letter M, use this filter:

sFilter = "[lastname] > ' ' lzzz ' And [lastname < ] ' N '"sFilter = "[LastName] > 'LZZZ' And [LastName] < 'N'"

適用対象