Outlook 2010-Makro zum Konvertieren ausgewählter E-Mail-Nachrichten in Nur-Text
1125
Caleb
Ich benötige Unterstützung beim Erstellen eines VBA-Makros in Outlook 2010, mit dem eine oder mehrere ausgewählte Nachrichten in Nur-Text-Formatierung konvertiert werden. Ich suche ein Makro statt einer eingehenden E-Mail-Regel.
Ich habe den folgenden Code gefunden, der in der Regel funktioniert, aber damit ich ihn verwenden kann, muss ich die Nachrichten in einen Ordner legen und die Regel manuell ausführen:
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
Ich habe vor einiger Zeit Code gefunden, mit dem alle Anhänge aus ausgewählten Nachrichten entfernt werden können, der perfekt für meine Bedürfnisse geeignet ist. Wenn möglich, versuche ich, die Funktionalität zu duplizieren. Anstatt mit Anhängen herumzuspielen, möchte ich, dass die Nachricht in Nur-Text umgewandelt wird.
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
Meine beste Anstrengung, die 2 zu kombinieren, ist wie folgt:
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
Ich erhalte jedoch eine Fehlermeldung, die angibt, dass "Objekt erforderlich" mit der Zeile beginnt:
strID = MyMail.EntryID
Jede Hilfe wäre sehr dankbar !!
Hallo! Wir sind kein kostenloser Skript-Schreibservice, und das Einfügen von Code, den Sie an einem anderen Ort gefunden haben, der besagt "Ich möchte das ändern, um X zu tun", zählt nicht als Recherche, die wir für Fragen wie diese benötigen Wo bleiben Sie bei der Umsetzung Ihrer Änderungen genau hängen?
Ƭᴇcʜιᴇ007 vor 8 Jahren
0
Ich habe versucht, die beiden Codes zu kombinieren, aber wenn ich es in Outlook ausführen möchte, wird ein Laufzeitfehler "Objekt erforderlich" angezeigt, und ich bin nicht mit VBA vertraut, um zu verstehen, was ich falsch mache . :-(
Caleb vor 8 Jahren
0
In Ihrer kombinierten Routine haben Sie nicht "MyMail.EntryID" definiert. In Ihrer ersten Routine wird "MyMail" als Parameter "ConvertToPlain (MyMail As MailItem)" übergeben. Ich kenne nicht genug VBA, um das Problem zu beheben, aber das sollte Ihnen genug Anhaltspunkte geben, um es selbst zu beheben.
DavidPostill vor 8 Jahren
1
1 Antwort auf die Frage
0
niton
Ihr Versuch, RemoveAttachments zu imitieren, enthält eine Menge zusätzlichen Code.
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
Nicht in der Frage, aber in diesem Code wird möglicherweise auch EntryID nicht benötigt.
Sub ConvertToPlain(MyMail As mailItem) MyMail.BodyFormat = olFormatPlain MyMail.Save End Sub
Eureka !! Vielen herzlichen Dank! @DavidPostill, mit Ihrem Vorschlag konnte ich meinen Code in Arbeit umwandeln, und als ich zurückkam, um meinen Erfolg zu posten, verglich ich meinen Code mit dem, was Niton vorschlug, und ich war zu demselben Ergebnis gekommen !! (Mein Code hatte immer noch den zusätzlichen Code, also vielen Dank, dass Sie ihn aufgeräumt haben!) Jetzt ist es Zeit für mich, ein Buch über VBA zu bekommen !!
Caleb vor 8 Jahren
0