Как SaveSelectedMail в Outlook ETS: ActiveExplorer.Selection, проверка TypeName = MailItem, вызов SaveMailAsPdf, затем категория и MailItem.Save, чтобы не сохранять повторно. В исходнике ещё отсекают письма без метки ИТС и спрашивают, если категория уже стоит. Для автопрогона папки берите Items папки, не Selection.
Сохранить выделенные письма Outlook
Нужно прогнать несколько писем из списка папки и не сохранить собрание как письмо.
Код
Public Const SAVED_CATEGORY As String = "Saved_PDF"
Public Function AlreadySaved(objMail As Outlook.MailItem) As Boolean
AlreadySaved = (InStr(1, objMail.Categories & "", SAVED_CATEGORY, vbTextCompare) > 0)
End Function
Public Sub SaveSelectedMail()
Dim exp As Outlook.Explorer
Dim objMail As Outlook.MailItem
Dim i As Long
Dim savedCount As Long
Dim skippedCount As Long
Dim failedCount As Long
Set exp = Application.ActiveExplorer
If exp Is Nothing Or exp.Selection.Count = 0 Then
MsgBox "Выделите одно или несколько писем.", vbExclamation
Exit Sub
End If
For i = 1 To exp.Selection.Count
If TypeName(exp.Selection(i)) = "MailItem" Then
Set objMail = exp.Selection(i)
If AlreadySaved(objMail) Then
skippedCount = skippedCount + 1
ElseIf SaveMailAsPdf(objMail, False) Then
objMail.Categories = SAVED_CATEGORY
objMail.Save
savedCount = savedCount + 1
Else
failedCount = failedCount + 1
End If
End If
Next i
MsgBox "Сохранено: " & savedCount & vbCrLf & _
"Пропущено: " & skippedCount & vbCrLf & _
"Ошибок: " & failedCount, vbInformation
End Sub
Связанные члены API
MailItem.GetInspector MailItem.Save Application.ActiveExplorer Explorer.Selection MailItem.Categories