Macro do Outlook 2010 para converter mensagens de e-mail selecionadas em texto sem formatação [fechado]

0

Preciso de ajuda para criar uma macro VBA no Outlook 2010 que converta uma ou mais mensagens selecionadas em formatação de texto sem formatação. Estou procurando uma macro em vez de uma regra de entrada de e-mail.

Eu encontrei o seguinte código que funciona como regra, mas para que eu possa usá-lo, eu tenho que colocar as mensagens em uma pasta e executar a regra manualmente:

link

Sub ConvertToPlain(MyMail As MailItem)
Dim strID As String
Dim objMail As Outlook.MailItem

strID = MyMail.EntryID
Set objMail = Application.Session.GetItemFromID(strID)
objMail.BodyFormat = olFormatPlain
objMail.Save

Set objMail = Nothing
End Sub

Eu encontrei algum código há algum tempo que é capaz de remover todos os anexos das mensagens selecionadas, que funciona perfeitamente para minhas necessidades e, se possível, estou tentando duplicar sua funcionalidade; no entanto, em vez de mexer com anexos, quero converter a mensagem em texto sem formatação.

link

Sub RemoveAttachments()
    Dim myAttachment        As Attachment
    Dim myAttachments       As Attachments
    Dim selItems            As Selection
    Dim myItem              As Object
    Dim lngAttachmentCount  As Long

    ' Set reference to the Selection.
    Set selItems = ActiveExplorer.Selection

    '  Loop though each item in the selection.
    For Each myItem In selItems
        Set myAttachments = myItem.Attachments

        lngAttachmentCount = myAttachments.Count

    ' Loop through attachments until attachment count = 0.
        While lngAttachmentCount > 0
            myAttachments(1).Delete
            lngAttachmentCount = myAttachments.Count
        Wend

        myItem.Save
    Next

    MsgBox "All Done. Attachments were removed.", vbOKOnly, "Message"

    Set myAttachment = Nothing
    Set myAttachments = Nothing
    Set selItems = Nothing
    Set myItem = Nothing
End Sub

Meu melhor esforço em combinar o 2 é o seguinte:

Sub ConvertPlainText()
    Dim selItems            As Selection
    Dim myItem              As Object
    Dim lngAttachmentCount  As Long
    Dim strID As String
    Dim objMail As Outlook.MailItem

    ' Set reference to the Selection.
    Set selItems = ActiveExplorer.Selection

    '  Loop though each item in the selection.
    For Each myItem In selItems
        Set myAttachments = myItem.Attachments

        lngAttachmentCount = myAttachments.Count

        strID = MyMail.EntryID
        Set objMail = Application.Session.GetItemFromID(strID)
        objMail.BodyFormat = olFormatPlain
        objMail.Save

        myItem.Save
    Next

    MsgBox "All Done. Email converted to Plaintext.", vbOKOnly, "Message"

    Set objMail = Nothing
    Set selItems = Nothing
    Set myItem = Nothing
End Sub

Mas recebo um erro que afirma "Objeto obrigatório", começando com a linha:

strID = MyMail.EntryID

Qualquer ajuda seria muito apreciada !!

    
por Caleb 29.08.2016 / 19:51

1 resposta

0

Há muito código extra em sua tentativa de imitar RemoveAttachments.

Sub ConvertPlainText()

    Dim selItems            As Selection
    Dim myItem              As Object

    ' Set reference to the Selection.
    Set selItems = ActiveExplorer.Selection

    '  Loop through each item in the selection.
    For Each myItem In selItems
        myItem.BodyFormat = olFormatPlain
        myItem.Save
    Next

    MsgBox "All Done. Email converted to Plaintext.", vbOKOnly, "Message"

    Set selItems = Nothing

End Sub

Não está na pergunta, mas você pode achar que EntryID não é necessário neste código.

Sub ConvertToPlain(MyMail As mailItem)
    MyMail.BodyFormat = olFormatPlain
    MyMail.Save
End Sub
    
por 30.08.2016 / 18:53