Страницы: 1
RSS
Поиск отправителя в Outlook используя Excel
 
Доброго времени суток,

Есть ли возможность сделать макрос, который запускался бы из книги excel , открывал Outlook и фильтровался во всех входящих по адресату, которого я бы указал в определенной ячейке?

нашел такой кусок кода, но как адаптировать под свои хотелки не пойму, опыта работы с Outlook objects нет.

Код
Sub getmail()

Dim olApp As Outlook.Application
Dim objNS As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder

'Dim msg As Outlook.MailItem
Dim InboxItem As Object

Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
sFilter = "[SenderName] = 'my@example.com'"


End Sub
Изменено: Walkish - 29.08.2020 18:16:58
 
Доброе время суток
Цитата
Walkish написал:
опыта работы с Outlook objects нет
Вариант
Код
Public Sub TestFilter()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim pItems As Items, pItem As MailItem
 
'Dim msg As Outlook.MailItem
Dim InboxItem As Object
 
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
Set pItems = olFolder.Items
Set pItem = pItems.Find("[SenderEmailAddress]='inform@emails.tinkoff.ru'")
Do Until pItem Is Nothing
    Debug.Print pItem.Subject
    Set pItem = pItems.FindNext
Loop
End Sub
 
Андрей, здраствуйте, код отрабатывает но ничего не происходит, он ищет адресата только в папке Inbox? Или во всех подпапках которые находятся в Inbox.
 
Цитата
Walkish написал:
но ничего не происходит
Можете это доказать? У меня в Immediate выводятся темы писем. С другой стороны вы не сообщили, что должно происходить :)
Цитата
Walkish написал:
во всех подпапках которые находятся в Inbox.
Ну, для человека, у которого только
Цитата
Walkish написал:
опыта работы с Outlook objects нет.
странно не владеть алгоритмом рекурсивного обхода папок, ну, да пожалуйста
Код
Public Sub TestFilter()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
 
'Dim msg As Outlook.MailItem
Dim InboxItem As Object
 
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
DebugPrintFolderItems olFolder
End Sub

Private Sub DebugPrintFolderItems(ByVal nextFolder As Outlook.Folder)
    Dim pItems As Items, pItem As MailItem, pFolder As Folder
    Set pItems = nextFolder.Items
    Set pItem = pItems.Find("[SenderEmailAddress]='inform@emails.tinkoff.ru'")
    Do Until pItem Is Nothing
        Debug.Print pItem.Subject
        Set pItem = pItems.FindNext
    Loop
    For Each pFolder In nextFolder.Folders
        DebugPrintFolderItems pFolder
    Next
End Sub
 
Андрей VG, Андрей, приветствую. Там вроде можно SQL запросом по всем папкам пройтись.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
можно SQL запросом
Привет, Михаил.
Я не против, если ТС хочет и предпочитает SQL, то я не настаиваю на рекурсивном алгоритме, просто привёл для примера. :)
 
Андрей, у меня тоже в Imeediate выводятся темы писем.

Мой вопрос был в том, может ли макрос открыть Outlook и зафильтроваться по адресату.  
 
Посмотрите подобное
https://stackoverflow.com/questions/55924883/how-to-filter-an-outlook-view-in-vba-based-on-to-email-addresses
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх