Мне нужна помощь в создании макроса VBA в Outlook 2010, который преобразует одно или несколько выбранных сообщений в формат простого текста. Я ищу макрос вместо правила входящей почты.

Я нашел следующий код, который работает, как правило, но для того, чтобы я мог его использовать, я должен поместить сообщения в папку и запустить правило вручную:

http://www.outlookcode.com/article.aspx?id=62

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

Некоторое время назад я нашел некоторый код, который может удалить все вложения из выбранных сообщений, который идеально подходит для моих нужд, и, если возможно, я пытаюсь дублировать его функциональность; однако вместо того, чтобы возиться с вложениями, я хочу, чтобы оно преобразовало сообщение в обычный текст.

http://www.slipstick.com/developer/code-samples/delete-attachments-messages/

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

Мои лучшие усилия по объединению 2 следующие:

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

Но я получаю сообщение об ошибке "Требуется объект", начиная со строки:

strID = MyMail.EntryID

Будем очень благодарны любой помощи!!

1 ответ1

0

В вашей попытке воспроизвести 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

Не в вопросе, но вы можете обнаружить, что EntryID также не нужен в этом коде.

Sub ConvertToPlain(MyMail As mailItem)
    MyMail.BodyFormat = olFormatPlain
    MyMail.Save
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .