Leerzeilen in Outlook per VBA löschen

Home-›Foren-›Outlook-›Outlook VBA-›Leerzeilen in Outlook per VBA löschen

13 Antworten anzeigen - 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.

                            13 Antworten anzeigen - 1 bis 13 (von insgesamt 13)

                            -