_Items.Find(String) _Items.Find(String) _Items.Find(String) Method


指定さFilterれたを満たす Outlook アイテムオブジェクトを検索して返します。Locates and returns an Outlook item object that satisfies the given Filter.

 System::Object ^ Find(System::String ^ Filter);
public object Find (string Filter);
Public Function Find (Filter As String) As Object


String String String

取得したオブジェクトが満たす必要がある条件を指定する文字列です。A string that specifies the criteria that the returned object must satisfy.


呼び出しが成功した場合は Outlook アイテムを表すオブジェクト型 (Object) の値。失敗した場合はnothing (C# では null 参照 (Visual Basic では nothing) を返します。An Object value that represents an Outlook item if the call succeeds; returns Nothing (a null reference (Nothing in Visual Basic) in C#) if it fails.


Itemsコレクション内のコンテンツインデックス検索を使用するにはRestrict(String) 、メソッドを使用します。To use content indexing search in the Items collection, use the Restrict(String) method. コンテンツインデックスのキーワードが含まFilterれている場合、FindRow はエラーを返します。FindRow will return an error if Filter contains content indexing keywords. コンテンツインデックスのキーワードの詳細については、「クエリキーワードを使用してアイテムをフィルターにかける」を参照してください。For more information on content indexing keywords, see Filtering Items Using Query Keywords

このメソッドは、 Filterで次のプロパティを使用してエラーを返します。The method will return an error with the following properties in the Filter:


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.


通常、日付と時刻は日付形式で格納されますが、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) のフィールドを検索するには、区切り文字として引用符を使用しないようにします。You can search for Integer fields with or without quotation marks as delimiters. 次のフィルターは、Outlook 2000 で作成された連絡先を取得します。The following filters will find contacts that were created with 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) を使用して値: sFilter = "[FullName & ] =" chr & (34 & ) sfullname Chr (34) を区切ります。This approach uses Chr(34) to delimit the value: sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34)

この方法では、二重引用符を使用して値を区切ります。 sFilter = "[FullName & ] = & " "" sfullname "" ""This approach uses double quotation marks to delimit the value: 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 メソッドを使用できます。また、フォルダー内のすべてのアイテムをループ処理し、InStr 関数を使用してフィールド内の検索を実行することもできます。Instead, you can use the AdvancedSearch 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'"