Макрос Outlook 2010 для преобразования выбранных сообщений электронной почты в обычный текст

1004
Caleb

Мне нужна помощь в создании макроса 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 

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

0
Привет! Мы не бесплатная служба написания сценариев, и просто вставка кода, который вы нашли где-то еще, говорящего «Я хочу изменить это, чтобы сделать X», не считается исследованием, которое нам требуется для таких вопросов. Что вы уже пробовали, и где вы застряли при реализации ваших изменений? Ƭᴇcʜιᴇ007 7 лет назад 0
Я пытался объединить 2 кода, но когда я запускаю его в Outlook, он говорит, что во время выполнения возникает ошибка «Требуется объект», и я недостаточно знаком с VBA, чтобы понять, что я делаю неправильно , :-( Caleb 7 лет назад 0
В вашей комбинированной процедуре вы не определили `MyMail.EntryID`. В вашей первой подпрограмме MyMail передается как параметр ConvertToPlain (MyMail As MailItem). Я не знаю достаточно VBA, чтобы исправить это, но это должно дать вам достаточно подсказки, чтобы исправить это самостоятельно. DavidPostill 7 лет назад 1

1 ответ на вопрос

0
niton

В вашей попытке воспроизвести 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 
Эврика !! Большое спасибо всем вам! @DavidPostill, с твоего предложения, я смог изменить свой код на работу, и когда я вернулся, чтобы опубликовать свой успех, я сравнил свой код с тем, что предложил нитон, и я пришел к тому же результату !! (в моем коде все еще был весь дополнительный код, так что спасибо вам, нитон, за его очистку!) Теперь пришло время получить книгу по VBA! Caleb 7 лет назад 0