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_startswith 或 ci_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
雖然日期和時間通常會以 日期 格式儲存,但 Find 和 Restrict 方法需要將日期和時間轉換成字串表示。 請使用 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 的專案。
關鍵字 (或類別)
[類別] 欄位屬於類型的關鍵字,設計用來存放多個值。 以程式設計方式存取 [類別] 欄位時,它的行為和 [文字] 欄位相同,而且字串必須完全相符。 文字字串中的值是由逗號及空格分隔。 這通常表示如果關鍵字欄位中包含多個值,您便無法使用 Find 及 Restrict 方法。 例如,如果有一個連絡人屬於 Business 類別,而且有另一個連絡人同時屬於 Business 及 Social 類別,那麼您無法直接使用 Find 及 Restrict 方法來擷取 Business 類別中的所有項目。 不過,您可以逐一查看資料夾中的所有連絡人,並且使用 Instr 函數來測試整個關鍵字欄位中是否包含 "Business" 字串。
注意
可能的例外狀況是,如果您將 [ 類別 ] 欄位限制為兩個,或是值數目偏低。 然後,您可以使用 Find 和 Restrict 方法搭配 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')"
其他附註
如果您嘗試搭配使用者自訂欄位使用 Find 或 Restrict 方法,那麼必須在資料夾中定義該欄位,否則會發生錯誤。 無法執行「包含」作業。 例如,您無法使用 Find 或 Restrict 在 [主旨] 欄位搜尋包含特定文字的項目。 但是,您可以使用 AdvancedSearch 方法,或是逐一查詢資料夾中的所有項目,並且使用 InStr 函數在任一欄位中執行搜尋。 使用 Restrict 方法來搜尋在特定字元範圍內開始的專案。 例如,使用下列篩選條件,搜尋姓氏開始字元為字母 M 的所有連絡人:
sFilter = "[LastName] > 'LZZZ' And [LastName] < 'N'"
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。