Макрос Outlook 2010 для преобразования выбранных сообщений электронной почты в обычный текст
1004
Caleb
Мне нужна помощь в создании макроса VBA в Outlook 2010, который преобразует одно или несколько выбранных сообщений в формат простого текста. Я ищу макрос вместо правила входящей почты.
Я нашел следующий код, который работает, как правило, но для того, чтобы я мог его использовать, я должен поместить сообщения в папку и запустить правило вручную:
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
Некоторое время назад я нашел некоторый код, который может удалить все вложения из выбранных сообщений, который идеально подходит для моих нужд, и, если возможно, я пытаюсь дублировать его функциональность; однако вместо того, чтобы возиться с вложениями, я хочу, чтобы он преобразовал сообщение в обычный текст.
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
Будем очень благодарны любой помощи!!
Привет! Мы не бесплатная служба написания сценариев, и просто вставка кода, который вы нашли где-то еще, говорящего «Я хочу изменить это, чтобы сделать 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