Прежде всего, нет необходимости перебирать все элементы в папке:
If Not folder.Items Is Nothing Then
For Each obj In folder.Items
Вместо этого вы можете использовать метод Sort
класса Items
, который сортирует коллекцию элементы по указанному свойству. По завершении этого метода индекс для коллекции сбрасывается на 1.
Sub SortByDueDate()
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myItem As Object
Dim myItems As Outlook.Items
Set myNameSpace = Application.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myItems = myFolder.Items
myItems.Sort "[LastModificationTime]", False
For Each myItem In myItems
Debug.Print myItem.Subject & "-- " & myItem.DueDate
Next myItem
End Sub
И вам не нужно использовать ключевое слово Set
для назначения структуры даты и времени. Set
используется для назначения ссылки на объект.
dat = obj.LastModificationTime