Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA eMail - Mehrzeiliger Text mit Zeilen

Forumthread: VBA eMail - Mehrzeiliger Text mit Zeilen

VBA eMail - Mehrzeiliger Text mit Zeilen
10.10.2022 10:59:26
Bernd
Hallo zusammen,
ich erstelle per VBA eMails.
Eine oft (Outlook Template) Datei wird per VBA geöffnet und per replace werden Platzhalter durch Text ersetzt.
Das funktioniert alls wunderbar bis auf eine Zelle in der ein Mehrzeiliger Text enthalten ist und dieser als einzeiliger Text eingeführt wird.
Inhalt der Zelle:
Einladung zum Meeting Text
Link: http://,,,,,,
Meeting ID: 123 456 5566
Passwort: 123456
In der Mail wird dann der Text der Zelle wie folgt abgebildet:
Einladung zum Meeting Text Link: http://,,,,,, Meeting ID: 123 456 5566 Passwort: 123456
Wie muss das Coding aussehen das der Text mit Zeilenumbruch in der Mail erscheint?
lbody = Replace(lbody, "#20#", Cells(i, 20).Value)
Danke + Gruß
Bernd
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA eMail - Mehrzeiliger Text mit Zeilen
10.10.2022 11:06:08
volti
Hallo Bernd,
ich orakel mal....
Ist es eine HTML-Mail?
Dann solltest Du die Zeilenumbrüche entsprechend umsetzen. Probiere mal dieses hier aus:
lbody = Replace(lbody, "#20#", Replace(Cells(i, 20).Value, vbLf, "<br>"))
Gruß
Karl-Heinz
AW: VBA eMail - Mehrzeiliger Text mit Zeilen
11.10.2022 09:49:01
Bernd
Hallo Karl-Heinz,
vielen Dank für deinen Lösungsvorschlag.
Leider wird der Text immernoch in einer Zeile ausgegeben.
Viele Grüße
Bernd
Anzeige
AW: VBA eMail - Mehrzeiliger Text mit Zeilen
11.10.2022 11:23:14
Bernd
Habe die Lösung gefunden:
lbody = Replace(lbody, "#20#", Replace(Cells(i, 20).Value, Chr(10), ""))
Leerzeichen bei br müssen weg
AW: VBA eMail - Mehrzeiliger Text mit Zeilen
11.10.2022 12:13:34
volti
Hallo Bernd,
das ist ja schön, wenn's jetzt geht.
Ich wundere mich aber schon, denn das ist genau das gleiche, was ich auch geschrieben hatte, wobei vbLF = CHR$(10) entspricht, nämlich dem Zeilenvorschub (LineFeed)
PS: Die Klammern kannst Du auch mittels & lt; und & gt; (Leerzeichen weg) darstellen und damit die Leerzeichen bei HTML-Tags vermeiden.
Gruß
Karl-Heinz
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Mehrzeiliger Text in VBA eMails: Zeilenumbrüche korrekt umsetzen


Schritt-für-Schritt-Anleitung

Um in einer VBA-generierten E-Mail einen mehrzeiligen Text korrekt darzustellen, befolge diese Schritte:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge den folgenden Code in dein VBA-Modul ein:
Dim lbody As String
lbody = "Hier ist der Text mit Zeilenumbrüchen:" & vbCrLf & _
        "Einladung zum Meeting Text" & vbCrLf & _
        "Link: http://,,,,,," & vbCrLf & _
        "Meeting ID: 123 456 5566" & vbCrLf & _
        "Passwort: 123456"

lbody = Replace(lbody, "#20#", Replace(Cells(i, 20).Value, vbLf, "<br>"))
  1. Stelle sicher, dass der Text, den du aus der Zelle holst, die Zeilenumbrüche (vbLf) korrekt enthält.
  2. Sende die E-Mail über Outlook, indem du das lbody als Body der E-Mail verwendest.

Häufige Fehler und Lösungen

Fehler: Der Text wird weiterhin als einzeiliger Text dargestellt.
Lösung: Überprüfe, ob du vbLf oder Chr(10) korrekt ersetzt. Der korrekte Code sollte so aussehen:

lbody = Replace(lbody, "#20#", Replace(Cells(i, 20).Value, Chr(10), ""))

Fehler: HTML-Tags werden nicht korrekt dargestellt.
Lösung: Stelle sicher, dass du die Leerzeichen in den HTML-Tags entfernst. Nutze &lt; und &gt; anstelle von < und >.


Alternative Methoden

Falls du einen dynamischen Inhalt versendest, kannst du die MailItem-Klasse von Outlook verwenden, um direkt auf Zeilenumbrüche zuzugreifen. Hier ein Beispiel:

Dim olApp As Object
Dim olMail As Object
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(0)

With olMail
    .To = "empfaenger@example.com"
    .Subject = "Betreff der E-Mail"
    .HTMLBody = Replace(Cells(i, 20).Value, vbLf, "<br>")
    .Display
End With

Praktische Beispiele

Stellen wir uns vor, du hast in Zelle A1 den folgenden Text:

Einladung zum Meeting
Link: http://example.com
Meeting ID: 123 456 5566
Passwort: 123456

Um diesen Text in einer E-Mail mit Zeilenumbrüchen darzustellen, verwende:

lbody = Replace(Cells(1, 1).Value, vbLf, "<br>")

Dies sorgt dafür, dass jeder Zeilenumbruch als HTML-Zeilenumbruch dargestellt wird.


Tipps für Profis

  • Nutze vbCrLf für Windows-spezifische Zeilenumbrüche, wenn du Text in einer E-Mail versendest.
  • Achte darauf, dass deine E-Mail im HTML-Format versendet wird. Dies kannst du tun, indem du .BodyFormat = olFormatHTML in deinem Code hinzufügst.
  • Experimentiere mit der MailItem-Klasse, um mehr Kontrolle über das Erscheinungsbild deiner E-Mails zu erhalten.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine E-Mail als HTML gesendet wird?
Du kannst dies tun, indem du den BodyFormat der E-Mail auf olFormatHTML setzt.

2. Warum erscheinen die Zeilenumbrüche nicht korrekt?
Überprüfe, ob du die richtigen Zeilenumbrüche (vbLf oder Chr(10)) im Code verwendest und die HTML-Tags korrekt setzt.

3. Was ist der Unterschied zwischen vbLf und Chr(10)?
vbLf steht für "Line Feed" und ist eine Konstante in VBA, während Chr(10) den ASCII-Wert für einen Zeilenumbruch darstellt. Beide haben die gleiche Funktion im Kontext von Zeilenumbrüchen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige