Поделиться через


Использование объекта Table для эффективного перечисления отфильтрованных элементов в папке

В примере кода в этом разделе объект Table используется для перечисления отфильтрованного набора элементов в папке "Входящие", которые были в последний раз изменены после 1 мая 2005 г. Для каждого из этих элементов в примере кода выводятся следующие значения: тема, время последнего изменения элемента и скрыт ли элемент. Процедура выглядит следующим образом:

  1. В примере определяется фильтр на основе значения свойства LastModificationTime элементов почты.

  2. Он применяет фильтр к Folder.GetTable и получает таблицу подмножества почтовых элементов в папке "Входящие", которая удовлетворяет фильтру.

Примечание Возвращаемая таблица содержит набор свойств по умолчанию для каждого отфильтрованного элемента: EntryID, Subject, CreationTime, LastModificationTime и MessageClass. 3. Затем он использует Columns.RemoveAll и Columns.Add , чтобы обновить таблицу с фактически требуемыми свойствами: Subject, LastModificationTime и скрытым атрибутом (PidTagAttributeHidden). Он указывает свойства с явными встроенными именами, если они существуют (например, Subject, LastModificationTime), и только если они этого не делают, он ссылается на свойства по их пространствам имен (например, скрытый атрибут почтового элемента).

Примечание Объекты Table , возвращенные из Folder.GetTable на шаге 2 и Columns.Add на шаге 3, содержат разные значения свойств, но для одного и того же набора отфильтрованных элементов в папке "Входящие". 4. Наконец, он использует Table.GetNextRow для перечисления отфильтрованных элементов (пока Table.EndOfTable не станет true), отображая значения трех требуемых свойств для каждого элемента.

Sub DemoTable() 
 'Declarations 
 Dim Filter As String 
 Dim oRow As Outlook.Row 
 Dim oTable As Outlook.Table 
 Dim oFolder As Outlook.Folder 
 
 'Get a Folder object for the Inbox 
 Set oFolder = Application.Session.GetDefaultFolder(olFolderInbox) 
 
 'Define Filter to obtain items last modified after May 1, 2005 
 Filter = "[LastModificationTime] > '5/1/2005'" 
 'Restrict with Filter 
 Set oTable = oFolder.GetTable(Filter) 
 
 'Remove all columns in the default column set 
 oTable.Columns.RemoveAll 
 'Specify desired properties 
 With oTable.Columns 
 .Add ("Subject") 
 .Add ("LastModificationTime") 
 'PidTagAttributeHidden referenced by the MAPI proptag namespace 
 .Add ("https://schemas.microsoft.com/mapi/proptag/0x10F4000B") 
 End With 
 
 'Enumerate the table using test for EndOfTable 
 Do Until (oTable.EndOfTable) 
 Set oRow = oTable.GetNextRow() 
 Debug.Print (oRow("Subject")) 
 Debug.Print (oRow("LastModificationTime")) 
 Debug.Print (oRow("https://schemas.microsoft.com/mapi/proptag/0x10F4000B")) 
 Loop 
End Sub

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.