Страницы: 1
RSS
Адрес последнего входящего сообщения в outlook, плавающая ошибка при срабатывании макроса
 
Коллеги, добрый день. Проблема следующая, есть макрос, который должен определять адрес последнего (именно последнего) входящего сообщения в outlook. Проблема в том что  макрос рандомно выбирает сообщение (это может быть вчерашнее сообщение или сообщение прошлой недели, а может быть и действительно последнее вошедшее). Прошу помощи, как заставить его, каждый раз стабильно обрабатывать последнее вошедшее сообщение.

Код
Sub test()
Dim myFolder As Outlook.MAPIFolder
Dim mymyItem As MailItem
Dim mailsend As String
Set myFolder = Application.GetNamespace("mapi").GetDefaultFolder(olFolderInbox) '.Folders("tt")
Set mymyItem = myFolder.Items.GetLast
mailsend = mymyItem.Sender   
msgbox mailsend
End Sub

P.S. Срабатывает макрос автоматически по строчке

Код
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)   
Call test
End Sub

 
Доброе время суток
Цитата
Антон Антонов написал:
как заставить
Изучить Items object (Outlook) (Время чтения: 2 мин), Items.Sort method (Outlook) и уже после всего этого Items.GetLast method (Outlook) или Items.GetFirst method (Outlook) в зависимости от направления сортировки. Как-то так, если не надеяться, что единственно возможной трактовкой GetLast является то, что он возвращает элемент последний по дате получения. :)
 
Андрей VG, спасибо конечно, но это кривота не особо внесла ясность, не затруднит ли вас объяснить по подробнее...

Скрипт
Код
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myItem As Object
Dim mailsend As String
Set myNameSpace = Application.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myItem = myFolder.Items.GetLast
mailsend = myItem.Sender
MsgBox mailsend


На одном ПК работает адекватно, на другом ПК обращается к рандомным письмам каждый раз. Прошу подсказать, в чем собака зарыта
 
Цитата
Антон Антонов написал:
это кривота не особо внесла ясность
Пожалуйста, пример такой сортировки, хотя странно, что вы совсем не хотите пользоваться поиском уже решённых задач и тратите столько времени на ожидание. :(
Код
Set Items = myFolder.Items
Items.Sort "[ReceivedTime]", True
Set myItem = Items.GetFirst
 
Цитата
Антон Антонов написал:
но это кривота не особо внесла ясность
Похоже и код не смог помочь... Или просто - такое воспитание: спасибо как лайк? :)
 
Андрей, благодарю, чудесным образом заработало.
Изменено: Антон Антонов - 04.06.2020 22:32:31
Страницы: 1
Наверх