Я нашел этот код, который может извлекать электронные письма из указанной папки в Outlook в Excel. Проблема в том, что иногда при установке подпапки выдается ошибка времени выполнения -2147352567 (80020009). Например, сегодня он дал мне ошибку, но после 7 попыток в течение одного часа (только для тестирования) это сработало. Такое поведение происходит случайно. В некоторые дни это работает первый раз, затем снова выдает ошибку на следующий день, и я должен продолжать работать до тех пор, пока она не будет работать, как сегодня.
Sub EmailStatsV3()
Dim Item As Object
Dim varOutput() As Variant
Dim lngcount As Long
Dim xlApp As Excel.Application
Dim xlSht As Excel.Worksheet
Dim ShareInbox As Outlook.MAPIFolder
Dim olNs As Outlook.NameSpace
Dim olRecip As Outlook.Recipient
Dim SubFolder As Object
Set olNs = Application.GetNamespace("MAPI")
Set olRecip = olNs.CreateRecipient("abc@xyz.ca") '// Owner's Name or email address
Set ShareInbox = olNs.GetSharedDefaultFolder(olRecip, olFolderInbox)
Set SubFolder = ShareInbox.Folders("name").Folders("outages") 'Change this line to specify folder
ReDim varOutput(1 To SubFolder.Items.Count, 1 To 11)
For Each Item In SubFolder.Items
If TypeName(Item) = "MailItem" Then
lngcount = lngcount + 1
varOutput(lngcount, 1) = Item.SenderEmailAddress 'Sender or SenderName
varOutput(lngcount, 2) = Item.ReceivedTime 'stats on when received
varOutput(lngcount, 3) = Item.ConversationTopic 'Conversation subject
varOutput(lngcount, 4) = Item.Subject 'to split out prefix
varOutput(lngcount, 5) = Item.Categories 'to split out category
varOutput(lngcount, 6) = Item.Sender
varOutput(lngcount, 7) = Item.SenderName
varOutput(lngcount, 8) = Item.To
varOutput(lngcount, 9) = Item.CC
varOutput(lngcount, 10) = SubFolder.Name
varOutput(lngcount, 11) = Item.Body
End If
Next
'Creates a blank workbook in excel
Set xlApp = New Excel.Application
Set xlSht = xlApp.Workbooks.Add.Sheets(1)
xlSht.Range("A1").Resize(UBound(varOutput, 1), _
UBound(varOutput, 2)).Value = varOutput
xlApp.Visible = True
Set olNs = Nothing
Set olRecip = Nothing '// Owner's Name or email address
Set ShareInbox = Nothing
Set SubFolder = Nothing 'Change this line to specify folder
End Sub
Спасибо,
Редактировать: Эта ошибка во время выполнения возникает только для меня при доступе к подпапкам в общих папках по умолчанию. Обходным путем было то, что я установил папку на текущую папку, и она сделала свое дело. Для других, сталкивающихся с подобными проблемами, это то, что я изменил. Вы должны помнить, чтобы выбрать папку в первую очередь.
Set SubFolder = Application.ActiveExplorer.CurrentFolder