对 Items 集合应用筛选条件,返回一个新的集合,其中包含原始项目中所有匹配筛选条件的项目。该方法可代替使用 Find 方法或 FindNext 方法遍历集合内的特定项目。如果集合中只有少量项目,Find 或 FindNext 方法要比筛选快。如果集合中项目较多,尤其是要在大型集合中查找少量项目时,Restrict 方法明显更快。
注意 如果将用户自定义的字段作为 Find 或 Restrict 语句的一部分,则文件夹中必须存在该用户自定义字段,否则代码会产生错误,指出字段未知。可以通过显示“字段选择器”,然后单击“新建”,将字段添加到文件夹。
expression.Restrict(Filter)
expression 必选。该表达式返回 Items 对象。
Filter 必选,String 类型。要应用的筛选字符串表达式。有关详细信息,请参阅 Find 方法。
该方法不能与下列属性一起使用,否则将产生错误:
Body Categories Children Class Companies CompanyLastFirstNoSpace CompanyLastFirstSpaceOnly ContactNames Contacts ConversationIndex DLName Email1EntryID Email2EntryID Email3EntryID EntryID HTMLBody IsOnlineMeeting LastFirstAndSuffix LastFirstNoSpace |
LastFirstNoSpaceCompany LastFirstSpaceOnly LastFirstSpaceOnlyCompany MemberCount NetMeetingAlias NetMeetingAutoStart NetMeetingOrganizerAlias NetMeetingServer NetMeetingType RecurrenceState ReplyRecipients ReceivedByEntryID RecevedOnBehalfOfEntryID ResponseState Saved Sent Submitted VotingOptions |
本 Visual Basic for Applications 示例使用 Restrict 方法获取所有与 Project X 有关的“收件箱”项目并将它们移到“Project X”文件夹中。
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNameSpace("MAPI")
Set myFolder = _
myNameSpace.GetDefaultFolder(olFolderInbox)
Set myItems = myFolder.Items
Set myRestrictItems = myItems.Restrict _ ("[Categories] = 'Project X'")
For Each myItem In myRestrictItems
myItem.Move myFolder.Folders("Project X")
Next
如果使用 VBScript,您不必创建 Application 对象,而且也不能使用命名常量。本示例说明如何使用 VBScript 执行相同任务。
Set myNameSpace = Application.GetNameSpace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(6)
Set myItems = myFolder.Items
Set myRestrictItems = myItems.Restrict _ ("[Categories] = 'Project X'")
For Each myItem In myRestrictItems
myItem.Move myFolder.Folders("Project X")
Next
本 Visual Basic for Applications 示例使用 Restrict 方法,根据项目的 LastModificationTime 属性将筛选条件应用于联系人项目。
Public Sub ContactDateCheck()
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myContacts = myNameSpace.GetDefaultFolder(olFolderContacts).Items
Set myItems = myContacts.Restrict("[LastModificationTime] > '05/15/97'")
For Each myItem In myItems
MsgBox myItem.FullName & ": " & MyItem.LastModificationTime
Next
End Sub
以下 Visual Basic for Applications 示例除演示在筛选条件中使用变量外与上例相同。
Public Sub ContactDateCheck()
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myContacts = myNameSpace.GetDefaultFolder(olFolderContacts).Items
DateStart = #6/11/97#
DateToCheck$ = "[LastModificationTime] >= """ & DateStart & """"
Set myRestrictItems = myContacts.Restrict(DateToCheck$)
For Each myItem In myRestrictItems
MsgBox myItem.FullName & ": " & MyItem.LastModificationTime
Next
End Sub