Leerzeilen in Outlook per VBA löschen

HomeForenOutlookOutlook VBALeerzeilen in Outlook per VBA löschen

Ansicht von 13 Beiträgen - 1 bis 13 (von insgesamt 13)
  • Autor
    Beitrag
  • #45033

    Unbekannt
    Teilnehmer

    Hi,

    ich habe festgestellt, dass durch das Umwandeln einer Html e-mail in \“nur text\“ viele unnötige Leerzeilen entstehen. Könnte man ein Makro schreiben, dass es beim Klick auf antworten (Habe bereits für das Makro einen Antwortbutton in der Menüleiste erstellt) überflüssige Leerzeilen wie folgt entfernt:

    Wenn nur eine Leerzeile zwischen 2 Sätzen steht bleibt alles so wie es ist, Bsp.:

    text text text text text text text text
    (Leerzeile)
    text text text text text text text text

    Wenn jedoch zwei, drei oder auch mehr Leerzeilen durch die automatische Umstellung auf \“nur Text\“ entstehen sollen diese automatisch beim Klick auf meinen Button entfernt werden, sprich:

    aus:

    text text text text text text text text
    (Leerzeile)
    (Leerzeile)
    (Leerzeile)
    (Leerzeile)
    text text text text text text text text

    wird:

    text text text text text text text text
    (Leerzeile)
    text text text text text text text text

    Hoffe ich habe mich Anhand meiner, wie ich finde, gelungenen Aufführung Tongue verständlich gemacht Grin.

    Freue mich auf eure Ideen.

    MfG

    frager

    #157887

    MichaelBauer
    Teilnehmer

    Dies müßte alles entfernen, was mehr als einen Zeilenumbruch hintereinander hat. Dabei werden zwei Zeilenumbrüche durch einen ersetzt:

    While Instr(Text, vbcrlf & vbcrlf)>0
    Text = Replace(Text, vbcrlf & vbcrlf, vbcrlf)
    Wend

    Ggf müßtest Du das erweitern, wenn es auch Zeilenumbrüche gibt, die nur aus vbLF bestehen.

    Viele Grüße
    Michael Bauer

    #157956

    Unbekannt
    Teilnehmer

    Hi,

    erstmal Danke für den Code, leider bekomme ich den nicht richtig eingebunden, sprich es funktioniert nicht.
    Wo muss der denn genau rein und muss da nicht sub … und end sub davor bzw. dahinter stehen?

    Ggf müßtest Du das erweitern, wenn es auch Zeilenumbrüche gibt, die nur aus vbLF bestehen.

    Dies versteh ich um ehrlich zu sein auch nicht :S.

    Hoffe, dass du mir da noch ein bischen helfen kannst.

    MfG

    frager

    #157984

    MichaelBauer
    Teilnehmer

    Richtig, außenherum gehört dieses:

    Public Sub IrgendeinName()

    End Sub

    Den Code kannst Du ins Modul \“DieseOutlookSitzung\“ schreiben. Zum aufruf könntest du Dir über Rechtsklick auf eine Symbolleiste/Anpassen/Befehle/Makros den Makronamen auf die Symbolleiste ziehen.

    Um auch vbLF zu ersetzen, kopiere die gezeigte While-wend Schleife einfach und tausche vbCRLF durch vbLF.

    Viele Grüße
    Michael Bauer

    #157996

    Unbekannt
    Teilnehmer

    Hab alles richtig gemacht, hab sogar ein anderes Makro über diesen Button laufen welches auch einwandfrei funktioniert.
    Was kann ich denn nun noch machen?

    Hoffe du hast noch eine Idee?

    Ich poste mal hier den gesamten Code, den ich Jetzt im Modul \“DieseOutlookSitzung\“ stehen habe. Vielleicht findest du so meinen Fehler.

    Sub AnwortMail()
    On Error Resume Next

    \’Benötigte Variablen
    Dim myOlSelection As Outlook.Selection
    Dim myOlMailItem As Outlook.MailItem
    Dim NewMail As MailItem
    Set myOlSelection = Application.ActiveExplorer.Selection

    \’Erzeugen einer neuen Email als Antwort
    For Each myOlMailItem In myOlSelection

    Set NewMail = myOlMailItem.Reply
    If NewMail.BodyFormat = olFormatHTML Then
    NewMail.BodyFormat = olFormatPlain
    Else
    End If
    NewMail.Display

    While InStr(Text, vbCrLf & vbCrLf) > 0
    Text = Replace(Text, vbCrLf & vbCrLf, vbCrLf)
    Wend

    Next
    End Sub

    Public Sub IrgendeinName()

    While InStr(Text, vbCrLf & vbCrLf) > 0
    Text = Replace(Text, vbCrLf & vbCrLf, vbCrLf)
    Wend

    End Sub

    Der obige Code wandelt eine Html Mail automatisch in eine \“nur Text\“ E-Mail um.
    Hoffe sehr, dass du da was machen kannst.

    MfG

    frager

    #158005

    Unbekannt
    Teilnehmer

    wie kann ich also beide codes, sprich: deinen, der die Leerzeilen löscht und meinen, der E-Mails ins \“nur Text\“ format umwandet zusammenfassen, sodass ich beide über einen Button in der Symbolleiste ausführen kann.

    Geht das überhaupt?

    MfG

    frager

    #158013

    MichaelBauer
    Teilnehmer

    Deswegen hatte ich das Beispiel ohne Sub/End Sub formuliert; um die Schleife in den bestehenden Code einzubauen, brauchst Du das ja nicht.

    Schau Dir bitte die Replace Funktion an: \“Text\“ war nur ein Beispiel. Dort muss der zu ersetzende Text übergeben werden, in diesem Fall also NewMail.Body.

    Viele Grüße
    Michael Bauer

    #158028

    Unbekannt
    Teilnehmer

    Kann die leider nicht zusammenfügen. Dafür müsste ich wenigstens Basiswissen haben.
    Muss da leider passen :S.

    MfG

    frager

    #158061

    Unbekannt
    Teilnehmer

    Hab jetzt doch den Code einbinden können. Habe nur festgestellt, dass er wahrlos, wenn nur eine Leerzeile da ist, auch diese löscht, sprich:

    TEXT TEXT TEXT
    (Leerzeile)
    TEXT TEXT TEXT

    wird zu:

    TEXT TEXT TEXT
    TEXT TEXT TEXT

    Das ist allerdings nicht gewollt.
    Andererseits lässt er gelegentlich auch doppelte Leerzeilen stehen, sprich:

    TEXT TEXT TEXT
    Leerzeile
    Leerzeile
    TEXT TEXT TEXT

    Das sollte auch nicht passieren.

    Weisst du woran das liegen könnte und wie man es korrigieren könnte?

    #158179

    MichaelBauer
    Teilnehmer

    Zu 1: Vielleicht irrst Du Dich. In HTML sind die Abstände zwischen zwei Absätzen manchmal sehr groß; das sieht dann nur aus wie ein doppelter Zeilenumbruch, ist aber keiner.

    Zu 2: Wie sieht der Code denn jetzt aus?

    Viele Grüße
    Michael Bauer

    #158396

    Unbekannt
    Teilnehmer

    ich irre mich in dem Fall nicht.

    Manchmal wird aus:

    From: XXX [mailto:xxx@xxx.de]
    Sent: Friday, March 14, 2008 11:44 AM
    To: \’xxx\‘
    Subject: xxx

    Hi,

    blabla bla

    Daraus wird dann einfach:

    From: XXX [mailto:xxx@xxx.de]
    Sent: Friday, March 14, 2008 11:44 AM
    To: \’xxx\‘
    Subject: xxx
    Hi,
    blabla bla

    Dies war nicht der Sinn.

    Aus:

    From: XXX [mailto:xxx@xxx.de]
    Sent: Friday, March 14, 2008 11:44 AM
    To: \’xxx\‘
    Subject: xxx

    Hi,

    blabla bla

    Soll:

    From: XXX [mailto:xxx@xxx.de]
    Sent: Friday, March 14, 2008 11:44 AM
    To: \’xxx\‘
    Subject: xxx

    Hi,

    blabla bla

    Hier der momentane Code:

    Sub AnwortMail()
    On Error Resume Next

    \’Benötigte Variablen
    Dim myOlSelection As Outlook.Selection
    Dim myOlMailItem As Outlook.MailItem
    Dim NewMail As MailItem
    Set myOlSelection = Application.ActiveExplorer.Selection

    \’Erzeugen einer neuen Email als Antwort
    For Each myOlMailItem In myOlSelection

    Set NewMail = myOlMailItem.Reply
    If NewMail.BodyFormat = olFormatHTML Then
    NewMail.BodyFormat = olFormatPlain
    Else
    End If
    While InStr(NewMail.Body, vbCrLf & vbCrLf) > 2
    NewMail.Body = Replace(NewMail.Body, vbCrLf & vbCrLf, vbCrLf)
    Wend
    NewMail.Display

    Next
    End Sub

    Hoffe dir fällt hier noch was ein :). Aber schonmal vorab vielen Dank für die bisherige Hilfe.
    No. 1 :thumbup:

    MfG

    frager

    #185705

    JoeHan
    Teilnehmer

    Hallo!

    Gibt es hier was Neues? Ich kenne mich allerdings überhaupt nicht in VBA aus und bräuchte eine Dummy-Anleitung.

    Das Problem mit den zusätzlich erzeugten Leerzeilen in HTML Emails wird auch hier diskutiert: https://www.mailhilfe.de/frage37279.html

    Wer weiß eine (praktikable) Lösung für Outlook 2010? 1.) Bei Versenden von HTML Emails => 1 Leerzeile wird zu 3! 1 Zeilenumbruch wird zu 1 Leerzeile! 2.) Bei Email Versand wird langer Link umgebrochen und zerstört.

    #185707

    JoeHan
    Teilnehmer

    Da der Autor ohne Registrierung gepostet hat, wird er vermutlich keine Benachrichtigung bei neuen Posts bekommen? Blöd.

    Wer weiß eine (praktikable) Lösung für Outlook 2010? 1.) Bei Versenden von HTML Emails => 1 Leerzeile wird zu 3! 1 Zeilenumbruch wird zu 1 Leerzeile! 2.) Bei Email Versand wird langer Link umgebrochen und zerstört.

Ansicht von 13 Beiträgen - 1 bis 13 (von insgesamt 13)

Du musst angemeldet sein, um auf dieses Thema antworten zu können.

-

Hat Ihnen der Beitrag gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...