Итерации через вложенные папки Outlook и входящих почтовых ящиков


0

У меня есть этот код ниже, который проходит через папку «Входящие», ища определенный адрес электронной почты, введенный в столбце E. таблицы, и возвращает последнюю дату отправления по электронной почте в столбец b.

Sub() 

Dim olApp As Outlook.Application 
Dim olNs As Outlook.Namespace 
Dim olFolder As Outlook.MAPIFolder 
Dim olMail As Outlook.MailItem 
Dim eFolder As Outlook.Folder 
Dim i As Long 
Dim wb As Workbook 
Dim ws As Worksheet 
Dim icounter As Long 
Dim lrow As Long 

Set wb = ActiveWorkbook 
Set ws = wb.Worksheets("-") 

Set olApp = New Outlook.Application 
Set olNs = olApp.GetNamespace("MAPI") 

lastrow = ThisWorkbook.Worksheets("vlookup").Cells(Rows.Count, "E").End(xlUp).Row 

Set olFolder = olNs.GetDefaultFolder(olFolderInbox) 
For i = olFolder.Items.Count To 1 Step -1 

If TypeOf olFolder.Items(i) Is MailItem Then 
     Set olMail = olFolder.Items(i) 
      For icounter = 2 To lastrow 
      If InStr(olMail.SenderEmailAddress, ws.Cells(icounter, 5).Value) > 0 Then 'qualify the cell 
       With ws 
        lrow = .Range("A" & .Rows.Count).End(xlUp).Row 
         .Range("B" & lrow + 1).Value = olMail.ReceivedTime 
         .Range("A" & lrow + 1).Value = olMail.SenderEmailAddress 
       End With 
      End If 
      Next icounter 
     End If 
    Next i 
    Set olFolder = Nothing 



    End Sub 

Я не уверен, как проходить через подпапки. Я проверил SO и нашел этот код ниже от Can I iterate through all Outlook emails in a folder including sub-folders?

Private Sub processFolder(ByVal oParent As Outlook.MAPIFolder) 

     Dim oFolder As Outlook.MAPIFolder 
     Dim oMail As Outlook.MailItem 

     For Each oMail In oParent.Items 

     'Get your data here ... 

     Next 

     If (oParent.Folders.Count > 0) Then 
      For Each oFolder In oParent.Folders 
       processFolder oFolder 
      Next 
     End If 
End Sub 

Но я никогда не использовал частные подводные лодки, так что я не знаю, как объединить их ..

нашел Кроме того, это что комбинированный версию с использованием частного sub i, найденного выше, но мне не повезло в переводе его на мой код. Outlook VBA Importing Emails from Subfolders into Excel

0

Частный суб сидит в модуле и доступен только для этого модуля, вы можете вызвать подлодку написав:

Call processFolder(The Outlook.MAPIFolder) 

Эта подпрограмма требует ввода переменной oParent, которая находится в форме Outlook. MAPIFolder.