Использование объекта Table для эффективного перечисления отфильтрованных элементов в папке
В примере кода в этом разделе объект Table используется для перечисления отфильтрованного набора элементов в папке "Входящие", которые были в последний раз изменены после 1 мая 2005 г. Для каждого из этих элементов в примере кода выводятся следующие значения: тема, время последнего изменения элемента и скрыт ли элемент. Процедура выглядит следующим образом:
В примере определяется фильтр на основе значения свойства LastModificationTime элементов почты.
Он применяет фильтр к 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 и обратная связь.