Есть ли возможность сделать макрос, который запускался бы из книги 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 написал: опыта работы с 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
Можете это доказать? У меня в 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