Рецепт

Сохранить выделенные письма Outlook

Нужно прогнать несколько писем из списка папки и не сохранить собрание как письмо.

Как SaveSelectedMail в Outlook ETS: ActiveExplorer.Selection, проверка TypeName = MailItem, вызов SaveMailAsPdf, затем категория и MailItem.Save, чтобы не сохранять повторно. В исходнике ещё отсекают письма без метки ИТС и спрашивают, если категория уже стоит. Для автопрогона папки берите Items папки, не Selection.

Код

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