Seçili E-posta İletilerini Düz Metne Dönüştürmek için Outlook 2010 Makrosu [kapalı]


0

Outlook 2010'da, seçilen bir veya daha fazla iletiyi Düz Metin biçimlendirmesine dönüştürecek bir VBA Makrosu oluşturma konusunda yardıma ihtiyacım var. Gelen bir posta kuralı yerine bir makro arıyorum.

Kural olarak çalışan aşağıdaki kodu buldum, ancak kullanabilmem için mesajları bir klasöre koyup kuralı manuel olarak çalıştırmam gerekiyor:

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

Bir süre önce, seçilen iletilerdeki tüm ekleri kaldırabilen, gereksinimlerime mükemmel şekilde uyan bir kod buldum ve mümkünse, işlevselliğini çoğaltmaya çalışıyorum; ancak, eklerle uğraşmak yerine, iletiyi Düz Metne dönüştürmesini istiyorum.

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'yi birleştirmedeki en iyi çabam şu şekilde:

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

Ancak satırdan başlayarak "Nesne gerekli" ifadesini içeren bir hata alıyorum:

strID = MyMail.EntryID

Herhangi bir yardım çok takdir edilecektir!


Merhaba! Ücretsiz bir komut dosyası yazma hizmeti değiliz ve "Bunu X yapmak için değiştirmek istiyorum" diyen başka bir yere bulduğunuz kodu yapıştırmak, bunun gibi sorular için istediğimiz araştırma sayılmaz. değişikliklerinizi uygularken tam olarak nerede sıkışıp kalıyorsunuz?
ᴇcʜιᴇ007

2 kodu birleştirmeye çalıştım, ancak Outlook'ta çalıştırmaya gittiğimde, "Nesne gerekli" bir Çalışma Zamanı hatası olduğunu belirtiyor ve ne yaptığımı anlamak için VBA ile yeterince aşina değilim . :-(
Caleb,

1
Birleştirilmiş rutininizde tanımlamamışsınız MyMail.EntryID. İlk rutininizde MyMailparametre olarak geçilir ConvertToPlain(MyMail As MailItem). Düzeltmek için yeterli VBA bilmiyorum ama bu, kendin düzeltmek için yeterli ipucu vermeli.
DavidPostill

Yanıtlar:


0

RemoveAttachments'ı taklit etme girişiminizde birçok ekstra kod var.

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

Soruda değil, ama bu kodda da EntryID'nin gerekli olmadığını görebilirsiniz.

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

Eureka !! Hepinize çok teşekkür ederim! @DavidPostill, önerinizle birlikte kodumu çalışmak için değiştirebildim ve başarımı göndermek için geri döndüğümde kodumu nitonun önerdiği şekilde karşılaştırdım ve aynı sonuca geldim !! (Kodumda hala tüm ekstra kodlar vardı, bu yüzden temizlediğiniz için teşekkür ederim niton!) Şimdi VBA'da bir kitap alma zamanı geldi !!
Caleb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.