В настоящее время я работаю над макросом для очистки электронных писем и вложений Outlook. Имеет незначительную ошибку несоответствия типов, надеясь, что кто-то может указать, какой тип данных мне нужен.
Итак, я знаю, что есть большое практическое препятствие, с которым мне придется столкнуться в какой-то момент. Сейчас я сосредоточен на том, чтобы заставить вещи работать, а затем на оптимизации
Sub FetchEmailData()
Dim appOutlook As Object
Dim olNs As Object
Dim olFolder As Object
Dim olItem As Object
Dim iRow As Integer
' Get/create Outlook Application
On Error Resume Next
Set appOutlook = GetObject(, "Outlook.Application")
If appOutlook Is Nothing Then
Set appOutlook = CreateObject("Outlook.Application")
End If
On Error GoTo 0
Set olNs = appOutlook.GetNamespace("MAPI")
Set olFolder = olNs.GetDefaultFolder(6) ' 6 == Inbox for some reason
For iRow = 1 To olFolder.Items.Count
'Check if we care about the e-mail
Call SaveEmailAttachment(olFolder.Items.Item(iRow))
'Go onto the next one if we don't
'ThisWorkbook.Sheets("Test").Cells(iRow + 1, 1) = olFolder.Items.Item(iRow).SenderEmailAddress
'ThisWorkbook.Sheets("Test").Cells(iRow + 1, 2) = olFolder.Items.Item(iRow).Subject
'ThisWorkbook.Sheets("Test").Cells(iRow + 1, 3) = olFolder.Items.Item(iRow).To
'ThisWorkbook.Sheets("Test").Cells(iRow + 1, 3) = olFolder.Items.Item(iRow).Size
Next iRow
End Sub
Sub SaveEmailAttachment(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dateFormat As String
saveFolder = ThisWorkbook.Names("EmailAttachmentSavePath").RefersToRange.Value2
dateFormat = Format(itm.ReceivedTime, "yyyy-mm-dd Hmm ")
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "\" & dateFormat & objAtt.DisplayName
Next
End Sub
Таким образом, несоответствие типов данных происходит из-за того, что я отправляю элемент папки Outlook, но получающий макрос ожидает почтовый элемент Outlook. Я знаю, что мне нужно получить оба элемента одного и того же типа, возможно, через dim, но я не совсем уверен, какой из них лучше использовать, и как мне нужно адаптировать код saveemailattachment для правильной компенсации.
Бонусный вопрос: есть ли способ очистить подпапку по имени?