Find メソッド (Outlook)Items.Find method (Outlook)

指定した_フィルター_を満たす Microsoft Outlook アイテムオブジェクトを検索して返します。Locates and returns a Microsoft Outlook item object that satisfies the given Filter.

構文Syntax

検索(フィルター)expression.Find (Filter)

expressionItems オブジェクトを返す式です。expression An expression that returns a Items object.

パラメーターParameters

名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
FilterFilter 必須Required StringString 新しいアイテムの Outlook アイテムの種類です。A string that specifies the criteria that the returned object must satisfy.

戻り値Return value

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

解説Remarks

Items コレクションでコンテンツインデックス検索を使用するには、 Restrict メソッドを使用します。To use content indexing search in the Items collection, use the Restrict 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.

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

| 本文| LastFirstNoSpaceCompany| |カテゴリ| Lastfirstspace のみ| || Lastfirstspace onlycompany| |クラス| Lastfirstnospace andsuffix| |企業| MemberCount| |会社のLastfirstnospace| Net会議エイリアス| |会社のLastfirstspace のみ| Net会議の自動開始| |Contactnames| Netアスオーガナイザー eralias| |連絡先| Net会議サーバー| |ConversationIndex| Net会議の種類| |Dlname| RecurrenceState| |Email1EntryID| ReplyRecipients| |Email2EntryID| ReceivedByEntryID| |Email3EntryID| ReceivedOnBehalfOfEntryID| |EntryID| Responsestate| |HTMLBody| 保存されました| |IsOnlineMeeting| 送信済み| |Lastファイヤスタンドサフィックス| 提出済み | |Lastfirstnospace| VotingOptions| |必要| Downloadstate| |BodyFormat| Isconflict| |Internetcodepage| MeetingWorkspaceURL| |アクセス許可||| Body| LastFirstNoSpaceCompany| | Categories| LastFirstSpaceOnly| | 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 メソッドのフィルターを作成する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) (テキスト フィールドの場合)String (for Text fields)

テキスト フィールドを抽出する場合、フィルターの条件に含める値の区切り文字には 2 つの一重引用符 (') または 2 つの二重引用符 (") を使用できます。When filtering text fields, you can use either a pair of single quotes (') or a pair of double quotes (") to delimit the values that are part of the filter. たとえば、次のすべての行は、フィールドが文字列型 ( String ) のときに正常に機能します。For example, all of the following lines function correctly when the field is of type String :

sFilter = "[CompanyName] = 'Microsoft'"  
sFilter = "[CompanyName] = ""Microsoft"""  
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プロパティが単語can'tと等しいことをフィルター処理する DASL フィルター文字列では、フィルター文字列全体が二重引用符のペアで区切られ、埋め込み文字列can'tは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/0x0037001f のプロパティ参照の最後の二重引用符、および単語 can't の値条件の単一引用符の 3 つの文字をエスケープする必要があります。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"" = '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" _& 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" _& Chr(34) & " ci_phrasematch " & "'can''t'"

次に、 Subject プロパティが the right stuff という文字列と一致し、さらにこの中の stuff という語が二重引用符で囲まれているものを検出する 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"" = '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.

DateDate

通常、日付と時刻は日付形式で格納されますが、 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. 日付の書式を、Outlook がこの処理で使用する書式に変換するには、Format 関数を使用します。To make sure that the date is formatted as Outlook expects, use the Format function. The following example creates a filter to find all contacts that have been modified after January 15, 1999 at 3:30 P.M.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)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 = "[Journal] = True" 

注意

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

キーワード (分類項目)Keywords (or Categories)

"分類項目" フィールドはキーワードとして使用され、複数の値を格納できます。The Categories field is of type keywords, which is designed to hold multiple values. プログラムを通じて "分類項目" フィールドにアクセスする場合は、このフィールドがテキスト フィールドと同じように扱われ、文字列が正確に一致する必要があります。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に制限するか、値の数を少なくする場合です。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 strings are not case-sensitive.

IntegerInteger

整数型 (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'"

フィルターで変数を使用する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 Scripting Edition (VBScript) コードは、変数を使用したフィルターの構文を示した例です。The following Microsoft Visual Basic Scripting Edition (VBScript) code sample illustrates syntax that uses variables as part of the filter.

sFullName = "Dan Wilson" 

Chr(34) を使用して値の範囲を指定する方法を次に示します。This approach uses Chr(34) to delimit the value:

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

二重引用符を使用して値の範囲を指定する方法を次に示します。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 = "[Categories] = 'Personal' Or [Categories] = 'Business'" 

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

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

NOT: Microsoft に勤務していない個人用連絡先をすべて取得します。NOT: The following code retrieves all personal contacts who don't work at 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. For example, you cannot use Find or Restrict to search for items that have a particular word in the Subject field.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.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. You can use the Restrict method to search for items that begin within a certain range of characters.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'"

関連項目See also

Items オブジェクトItems Object

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.