_Items.Find(String) メソッド

定義

指定 Filterした を満たす Outlook アイテム オブジェクトを見つけて返します。

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

パラメーター

Filter
String

取得したオブジェクトが満たす必要がある条件を指定する文字列です。

戻り値

呼び出しが成功した場合に Outlook アイテムを表す Object 値。失敗した場合は Nothing (C#では Null 参照 (Visual Basic では Nothing) を返します。

注釈

コレクションで Items コンテンツ インデックス検索を使用するには、 メソッドを使用します Restrict(String) 。 コンテンツ インデックス作成キーワードが含まれている場合FilterFindRow はエラーを返します。 コンテンツ のインデックス作成キーワードの詳細については、「クエリ キーワードを使用したアイテムのフィルター処理」を参照してください。

メソッドは、 で次のプロパティを持つエラーを Filter返します。

BodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermissionLastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURL

Find メソッドおよび Restrict メソッドのためのフィルターの作成

フィルターの構文は、フィルターを適用するフィールドの種類によって異なります。

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

テキスト フィールドを検索する場合は、アポストロフィ (') または二重引用符 () のいずれかを使用することができます ("")、フィルターの一部である値を区切るために。 たとえば、次の行はすべて、フィールドが String 型 (C#の文字列 ) の場合に正しく機能します。

sFilter = "[CompanyName] = 'Microsoft'"

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

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

Jet または DASL クエリでフィルターを指定するときに、フィルターに含める文字列の区切り文字として単一引用符のペアを使用しており、かつその文字列に別の単一引用符やアポストロフィが含まれている場合は、その単一引用符またはアポストロフィの前に、エスケープ文字として単一引用符を追加します。 文字列の区切り文字として二重引用符を使用している場合も、同様に処理します。 つまり、文字列に二重引用符が含まれている場合は、その二重引用符の前に、エスケープ文字として二重引用符を追加します。

たとえば、単語と等しい Subject プロパティをフィルター処理する DASL フィルター文字列では、フィルター文字列全体が二重引用符のペアで区切られ、埋め込み文字列は単一引用符のペアで区切ることはできません。 このフィルター文字列でエスケープする必要がある 3 つの文字があります。 のプロパティ参照の開始二重引用符と終了二重引用符、および単語の http://schemas.microsoft.com/mapi/proptag/0x0037001f値条件のアポストロフィはできません。 適切なエスケープ文字を適用すると、フィルター文字列を次のように表すことができます。

filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'can't'"

chr(34) 関数を使用して、エスケープ文字として使用される二重引用符 (ASCII 文字値は 34) を表すこともできます。 二重引用符のエスケープ文字の代わりに chr(34) を使用すると、最後の例を次のように表すことができます。

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

& Chr(34) & " = " & "'

DASL クエリを ci_startswith 演算子または ci_phrasematch 演算子と共に使用する場合も、単一引用符と二重引用符をエスケープする必要があります。 たとえば、次のクエリは、メッセージの件名で can't の語句一致クエリを実行します。

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

& Chr(34) & " ci_phrasematch " & "'

もう 1 つの例は DASL フィルター文字列で、 Subject プロパティを正しい単語と等しくフィルター処理します。ここで、単語は二重引用符で囲まれています。 この場合、次に示すように、末尾の二重引用符をエスケープする必要があります。

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

スペース、単一引用符、二重引用符、またはパーセント文字を含んでいる名前付きプロパティのプロパティ参照には、別のエスケープ規則のセットが適用されます。 詳細については、「名前空間によってプロパティを参照する」を参照してください。

Date

日付と時刻は通常、日付形式で格納されますが、Find メソッドと Restrict メソッドでは、日付と時刻を文字列形式に変換する必要があります。 Microsoft Outlook が必要とするとおりに日付が形式化されるようにするには、Format 関数を使用します。 次の例では、1999 年 1 月 15 日の午後 3 時 30 分より後に変更されたすべての連絡先を検索するフィルターを作成しています。

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

Boolean 演算子

TRUE/FALSE、YES/NO、ON/OFF などのブール型 (Boolean) の値は、文字列に変換せずに処理する必要があります。 たとえば、連絡先の履歴が有効になっているかどうかを確認するには、次のフィルターを使用します。

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

: ブール型フィールドの区切り記号として引用符を使用する場合、空の文字列はフィールドが False の項目を検索し、空でない文字列はすべてフィールドが True の項目を検索します。

キーワード (または Categories)

[カテゴリ] フィールドは、複数の値を保持するように設計されたキーワード型です。 プログラムでアクセスするときには、Categories フィールドはテキスト フィールドのように動作し、文字列は完全一致する必要があります。 テキスト文字列内の値は、コンマとスペースで区切られています。 つまり、一般に複数の値が含まれているキーワード フィールドには Find メソッドと Restrict メソッドが使用できないということです。 たとえば、Business のカテゴリに 1 つの連絡先があり、Business と Social のカテゴリに 1 つの連絡先がある場合は、Business のカテゴリに含まれるすべてのアイテムを取得するために、Find メソッドと Restrict メソッドを簡単に使用することはできません。 その代わりに、フォルダー内のすべての連絡先をループ処理して、全体のキーワード フィールド内に文字列 "Business" が含まれているかどうかを Instr 関数でテストします。

: 可能な例外は、[カテゴリ] フィールドを 2 つ、または値の数が少ない場合です。 次に、OR 論理演算子で Find メソッドと Restrict メソッドを使用して、すべてのビジネス連絡先を取得できます。 たとえば、"Business" OR "Business, Personal" OR "Personal, Business" のようにします (擬似コード)。 Category の文字列は、大文字と小文字が区別されません。

整数

区切り記号として、引用符の付いたフィールドまたは引用符なしの整数フィールドを検索できます。 次のフィルターは、Outlook 2000 で作成された連絡先を取得します。

sFilter = "[OutlookInternalVersion] = 92711"

sFilter = "[OutlookInternalVersion] = '92711'"

フィルターの一部として変数を使用する

Restrict メソッドの例に示すように、フィルターの一部として変数の値を使用できます。 次の Microsoft Visual Basic コード サンプルは、フィルターの一部として変数を使用する構文を示しています。

sFullName = "Dan Wilson"

この方法では、Chr(34) を使用して、sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34) の値を区切ります。

この方法では、二重引用符を使用して値を区切ります: sFilter = "[FullName] = """ & sFullName & """

フィルターの一部として論理演算子を使用する

論理演算子は、AND、OR、および NOT が使用可能です。 Restrict メソッドの句のバリエーションを次に示します。そのため、複数の条件を指定できます。

OR: カテゴリが Business または Personal のすべての連絡先アイテムを返します。

sFilter = "[Categories] = 'Personal' or [Categories] = 'Business'"

AND: Microsoft で勤務している個人用連絡先をすべて取得します。

sFilter = "[Categories] = 'Personal' and [CompanyName] = 'Microsoft'"

NOT: Microsoft に勤務していない個人用連絡先をすべて取得します。

sFilter = "[Categories] = 'Personal' And Not([CompanyName] = 'Microsoft')"

追加情報

ユーザー定義フィールドで Find メソッドまたは Restrict メソッドを使用する場合は、フォルダー内でフィールドを定義する必要があります。それ以外の場合はエラーが発生します。 「含む」操作を実行する方法はありません。 たとえば、Subject フィールドに特定の語が含まれているアイテムを検索するために、Find または Restrict は使用できません。 その代わりに、AdvancedSearch メソッドを使用できます。また、フォルダー内のすべてのアイテムをループ処理し、InStr 関数を使用してフィールド内の検索を実行することもできます。 Restrict メソッドは、特定の範囲の文字で始まるアイテムの検索に使用できます。 たとえば、姓が文字 M で始まる連絡先のすべてを検索するには、次のフィルターを使用します。

sFilter = "[LastName] > 'LZZZ' と [LastName] < 'N'"

適用対象