Items.Find メソッド (Outlook)

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

構文

検索 (フィルター)

expressionItems オブジェクトを返す式です。

パラメーター

名前 必須 / オプション データ型 説明
Filter 必須 String 新しいアイテムの Outlook アイテムの種類です。

戻り値

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

注釈

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

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

Body LastFirstNoSpaceCompany
Children LastFirstSpaceOnlyCompany
Class LastFirstNoSpaceAndSuffix
Companies MemberCount
CompanyLastFirstNoSpace NetMeetingAlias
CompanyLastFirstSpaceOnly NetMeetingAutoStart
ContactNames NetMeetingOrganizerAlias
Contacts NetMeetingServer
ConversationIndex NetMeetingType
DLName RecurrenceState
Email1EntryID ReplyRecipients
Email2EntryID ReceivedByEntryID
Email3EntryID ReceivedOnBehalfOfEntryID
EntryID ResponseState
HTMLBody Saved
IsOnlineMeeting Sent
LastFirstAndSuffix Submitted
LastFirstNoSpace VotingOptions
AutoResolvedWinner DownloadState
BodyFormat IsConflict
InternetCodePage MeetingWorkspaceURL
Permission

Find メソッドおよび Restrict メソッドのフィルターを作成する

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

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

テキスト フィールドを抽出する場合、フィルターの条件に含める値の区切り文字には 2 つの一重引用符 (') または 2 つの二重引用符 (") を使用できます。 たとえば、フィールドが String 型の場合、次のすべての行が正しく機能します。

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

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

たとえば、 Subject プロパティをフィルター処理する DASL フィルター文字列では、単語 can'tと等しい場合、フィルター文字列全体が二重引用符のペアで区切られ、埋め込み文字列 can't は一重引用符のペアで区切られます。 このフィルター文字列でエスケープする必要がある 3 つの文字があります。 のプロパティ参照の開始二重引用符と終了二重引用符、および単語 can'thttp://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) & " = " & "'can''t'"

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

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

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

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

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

Date

日付と時刻は通常、 日付 形式で格納されますが、 Find メソッドと Restrict メソッドでは、日付と時刻を文字列形式に変換する必要があります。 日付の書式を、Outlook がこの処理で使用する書式に変換するには、Format 関数を使用します。 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] > '" & Format("1/15/99 3:30pm", "ddddd h:nn AMPM") & "'"

ブール型 (Boolen)

TRUE/FALSE、YES/NO、ON/OFF などのブール型 (Boolean) の値は、文字列に変換せずに処理する必要があります。 たとえば、連絡先のジャーナリングが有効かどうかを判断するには、次のフィルターを使用できます。

sFilter = "[Journal] = True" 

注:

ブール型 (Boolean) のフィールドの検索で区切り文字に引用符を使用した場合、空の文字列を指定すると False が格納されているフィールドのアイテムが検索されます。また、空ではない文字列、つまり任意の文字列を指定すると、True が格納されているフィールドのアイテムが検索されます。

キーワード (分類項目)

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

注:

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

Integer

整数型 (Integer) のフィールドは、区切り文字の引用符の有無にかかわらず検索できます。 次のフィルターは、Outlook 2000 で作成された連絡先を取得します。

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

フィルターで変数を使用する

Restrict メソッドの例で示したように、フィルターには変数の値を使用することもできます。 次に示す Microsoft Visual Basic Scripting Edition (VBScript) コードは、変数を使用したフィルターの構文を示した例です。

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 メソッドを使用する場合は、フォルダー内でフィールドを定義する必要があります。それ以外の場合はエラーが発生します。 「含む」操作を実行する方法はありません。 For example, you cannot use Find or Restrict to search for items that have a particular word in the Subject field. 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 メソッドを使用して、特定の文字範囲内で始まる項目を検索します。 たとえば、姓が文字 M で始まる連絡先のすべてを検索するには、次のフィルターを使用します。

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

関連項目

Items オブジェクト

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

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