指定された フィルターを満たす Microsoft Outlook アイテム オブジェクトを見つけて返します。
構文
式。検索 (フィルター)
expression は Items オブジェクトを返す式です。
パラメーター
| 名前 | 必須 / オプション | データ型 | 説明 |
|---|---|---|---|
| Filter | 必須 | String | 新しいアイテムの Outlook アイテムの種類です。 |
戻り値
呼び出しが成功した場合の Outlook アイテムを表す オブジェクト 値。失敗した場合は Null (Visual Basic では Nothing ) を返します。
注釈
アイテム コレクションでコンテンツ インデックス検索を使用するには、Restrict メソッドを使用します。 Filter にコンテンツのインデックス キーワードが含まれる場合、FindRow によってエラーが返されます。 コンテンツのインデックス キーワードの詳細については、「クエリ キーワードを使ってアイテムをフィルターにかける」を参照してください。
メソッドは、 フィルター で次のプロパティを持つエラーを返します:
| 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 プロパティが単語 can't と等しいことをフィルター処理する DASL フィルター文字列では、フィルター文字列全体が二重引用符で区切られ、埋め込み文字列 can't が単一引用符で区切られます。 このフィルター文字列でエスケープする必要がある文字は 3 つあります。 http://schemas.microsoft.com/mapi/proptag/0x0037001f のプロパティ参照の先頭の二重引用符と末尾の二重引用符、単語 can't の値条件のアポストロフィです。 適切なエスケープ文字を適用すると、フィルター文字列を次のように表すことができます。
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'"
別の例として、 Subject プロパティが単語 the right stuff と等しいことをフィルター処理する DASL フィルター文字列があります。ここで、単語 stuff は二重引用符で囲まれています。 この場合、次に示すように、末尾の二重引用符をエスケープする必要があります。
filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'the right ""stuff""'"
スペース、単一引用符、二重引用符、またはパーセント文字を含んでいる名前付きプロパティのプロパティ参照には、別のエスケープ規則のセットが適用されます。 詳細については、「名前空間によってプロパティを参照する」を参照してください。
Date
通常、日付と時刻は 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 つに制限する、つまり値を少なくする場合です。 次に、 Find メソッドと Restrict メソッドと OR 論理演算子を使用して、すべての取引先連絡先を取得できます。 たとえば、(擬似コードの場合): "Business" OR "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'"
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。