共用方式為


Items.Find 方法 (Outlook)

找出並傳回 符合指定 Filter的 Microsoft Outlook 專案物件。

語法

運算式尋找 (篩選 器)

表達 會傳回 Items 物件的運算式。

參數

名稱 必要/選用 資料類型 描述
Filter 必要 字串 會指定準則的字串,且傳回的物件必須滿足其準則。

傳回值

Object值,表示呼叫成功時的 Outlook 專案;如果失敗,會傳回Null (或 Visual Basic 中的Nothing) 。

註解

若要在 Items 集合中使用內容索引搜尋,請使用 Restrict 方法。 FindRow 會在 Filter 包含內容索引關鍵字時傳回錯誤。 如需內容索引關鍵字的詳細資訊,請參閱使用查詢關鍵字篩選項目

方法會在 Filter 中傳回具有下列屬性的錯誤:

Body LastFirstNoSpaceCompany
Children LastFirstSpaceOnlyCompany
Class LastFirstNoSpaceAndSuffix
Companies MemberCount
CompanyLastFirstNoSpace NetMeetingAlias
CompanyLastFirstSpaceOnly NetMeetingAutoStart
ContactNames NetMeetingOrganizerAlias
連絡人 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 時,下列所有行都會正常運作:

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

在 Jet 或 DASL 查詢中指定篩選時,如果您使用一對單引號來分隔屬於篩選的字串,而且字串包含另一個單引號或簡縮號 (Apostrophe),請在該單引號或簡縮號前面加上一個單引號做為逸出字元。 如果您使用一對雙引號來分隔字串,也請套用相同的方法。 如果字串包含雙引號,請在雙引號前面加上一個雙引號來做為逸出字元。

例如,在篩選 Subject 屬性等 于 單字 can't 的 DASL 篩選字串中,整個篩選字串會以一對雙引號分隔,而內嵌字串 can't 會以一對單引號分隔。 在此篩選字串中,您需要逸出三個字元:的屬性參考 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'"

使用 ci_startswithci_phrasematch 運算子的 DASL 查詢,也需要逸出單引號及雙引號字元。 例如,下列查詢會在郵件主旨中執行 can't 的片語比對查詢:

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

另一個範例是 DASL 篩選字串,其篩選 Subject 屬性等 于 字 the right stuff 組,其中的字 stuff 會以雙引號括住。 在這種情況下,括住的雙引號必須逸出,如下所示:

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

一組不同的逸出規則適用于包含空格、單引號、雙引號或百分比字元之具名屬性的屬性參考。 如需詳細資訊,請參閱依命名空間參照屬性

Date

雖然日期和時間通常會以 日期 格式儲存,但 FindRestrict 方法需要將日期和時間轉換成字串表示。 請使用 Format 函數,確保日期格式化為 Outlook 所預期的格式。 下列範例會建立一個篩選條件,尋找在 1999 年 1 月 15 日下午 3:30 分之後修改的所有連絡人。

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

布林值運算元

布耳運算TRUE/ FALSE、YES/NO、ON/OFF 等不應該轉換成字串。 例如,若要判斷連絡人的日誌功能是否啟用,您可以使用這個篩選:

sFilter = "[Journal] = True" 

注意事項

如果您使用引號做為 布林值 欄位的分隔符號,則空字串會尋找欄位為 False 的專案,而所有非空白字串都會找到欄位為 True 的專案

關鍵字 (或類別)

[類別] 欄位屬於類型的關鍵字,設計用來存放多個值。 以程式設計方式存取 [類別] 欄位時,它的行為和 [文字] 欄位相同,而且字串必須完全相符。 文字字串中的值是由逗號及空格分隔。 這通常表示如果關鍵字欄位中包含多個值,您便無法使用 FindRestrict 方法。 例如,如果有一個連絡人屬於 Business 類別,而且有另一個連絡人同時屬於 Business 及 Social 類別,那麼您無法直接使用 FindRestrict 方法來擷取 Business 類別中的所有項目。 不過,您可以逐一查看資料夾中的所有連絡人,並且使用 Instr 函數來測試整個關鍵字欄位中是否包含 "Business" 字串。

注意事項

可能的例外狀況是,如果您將 [ 類別 ] 欄位限制為兩個,或是值數目偏低。 然後,您可以使用 FindRestrict 方法搭配 OR 邏輯運算子來擷取所有商務連絡人。 例如, (虛擬程式碼) :「Business」 或 「Business, Personal」 OR 「Personal, Business」。類別字串不區分大小寫。

整數

搜尋 [整數] 欄位時,您可以使用也可以不使用引號做為分隔字元。 下列篩選器會尋找使用 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')"

其他附註

如果您嘗試搭配使用者自訂欄位使用 FindRestrict 方法,那麼必須在資料夾中定義該欄位,否則會發生錯誤。 無法執行「包含」作業。 例如,您無法使用 FindRestrict[主旨] 欄位搜尋包含特定文字的項目。 但是,您可以使用 AdvancedSearch 方法,或是逐一查詢資料夾中的所有項目,並且使用 InStr 函數在任一欄位中執行搜尋。 使用 Restrict 方法來搜尋在特定字元範圍內開始的專案。 例如,使用下列篩選條件,搜尋姓氏開始字元為字母 M 的所有連絡人:

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

另請參閱

Items 物件

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應