Registriert seit: 15.02.2026
Version(en): 2010
Hallo zusammen, ich versuche per Makro im Excel Serien-E-Mails zu erstellen. Dabei stört mich, dass die daraus im Outlook generierte E-Mail 12 Punkt Abstand nach jedem Absatz als setzt und das obwohl die Standardformatierung im Outlook gem. Vorlage "NormalEMail" auf 0 gesetzt ist. Auch wenn ich im Outlook ne neue E-Mail erstelle, kommt die normale Formatierung und nicht die mit 12 Punkte. Weiß jemand, woran das liegt und ob es einen Befehl im VBA gibt, der die Formatierung für neue E-Mails auf 0 setzt? Das ist ein Auszug aus meinem Code: Sub EmailErstellenVorlAbrechnung() Dim objOutlook As Object Dim objMail As Object Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) With objMail .To = Range("EMailAdresseVorl").Value .Subject = Range("BetreffEMailVorl").Value .Body = xxxxx _ Ich freue mich über ein paar Tipps. Danke im Voraus hierfür  Viele Grüße, Georg-Ferdinand
Registriert seit: 12.06.2020
Version(en): 2024, 365business
16.02.2026, 08:09
(Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2026, 08:10 von ralf_b.)
du kannst eine Email aus einer Vorlage erzeugen. Aber in deinem Code sieht es danach nicht aus. hier mal ein schnelles Beispiel von der KI aus der Google suche Code: Sub CreateEmailFromTemplate() Dim olApp As Object Dim olMail As Object Dim templatePath As String ' Pfad zur .oft Datei templatePath = "C:\Pfad\zu\Ihrer\Vorlage.oft" ' Outlook Instanz erstellen Set olApp = CreateObject("Outlook.Application") ' E-Mail aus Template erstellen Set olMail = olApp.CreateItemFromTemplate(templatePath) ' Platzhalter im Text ersetzen (z.B. %NAME%) With olMail .Body = Replace(.Body, "%NAME%", "Max Mustermann") .Subject = Replace(.Subject, "%DATUM%", Date) .To = "kunde@example.com" .Display ' Zeigt die E-Mail an, zum Senden .Send verwenden End With ' Aufräumen Set olMail = Nothing Set olApp = Nothing End Sub
Registriert seit: 25.11.2018
Version(en): 2016 Plus
Hier zusätzlich und alternative auch eine einfache Lösung für die lästigen 12-Punkt-Abstände in Ihren Excel-Serien-E-Mails. Outlook nutzt für E-Mails standardmäßig HTML-Formatierung (auch bei "Normale EMail"). Dein VBA-Code setzt den .Body-Text, der als reiner Text interpretiert wird. Outlook konvertiert diesen automatisch in HTML und fügt dabei Standard-Absatzabstände (12pt) ein. Code: Sub SerienEmails_OhneAbstaende() Dim OutlookApp As Object Dim Mail As Object Dim Empfaenger As String Dim Betreff As String Dim TextInhalt As String Dim i As Long Dim letzteZeile As Long
' Outlook-Instanz erstellen Set OutlookApp = CreateObject("Outlook.Application") Set Mail = OutlookApp.CreateItem(0) ' Daten aus Excel-Tabelle lesen (Anpassen an Ihre Tabellenstruktur) letzteZeile = Sheets("Empfänger").Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To letzteZeile ' Ab Zeile 2 (Überschrift in Zeile 1) Empfaenger = Sheets("Empfänger").Cells(i, 1).Value ' Spalte A: E-Mail-Adresse Betreff = Sheets("Empfänger").Cells(i, 2).Value ' Spalte B: Betreff TextInhalt = Sheets("Empfänger").Cells(i, 3).Value ' Spalte C: E-Mail-Text ' E-Mail-Einstellungen With Mail .Display ' E-Mail zum Prüfen anzeigen (bei Bedarf durch .Send ersetzen) .To = Empfaenger .Subject = Betreff ' KERNLÖSUNG: Formatierung auf einfachen Text umstellen & Zeilenumbrüche entfernen .BodyFormat = 1 ' 1 = olFormatPlain (einfacher Text) .Body = Replace(TextInhalt, vbCrLf, " ") ' Alle Zeilenumbrüche durch Leerzeichen ersetzen End With ' Optional: Wartezeit zwischen E-Mails (verhindert Outlook-Überlastung) Application.Wait Now + TimeValue("0:00:02") Next i ' Aufräumen Set Mail = Nothing Set OutlookApp = Nothing MsgBox "Serien-E-Mails erfolgreich erstellt!", vbInformation End Sub
Testen Sie den Code zuerst mit 2-3 Test-E-Mails, bevor Sie ihn für große Serien einsetzen. So vermeiden Sie unerwartete Formatierungen.
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
nur ein paar eher allgemeine Kommentare:
Auch in Word kann eine Serien-Email mit Excel-Daten erstellt werden.
Outlook nutzt Word als Editor, d.h. alle Word-Einstellungen für Formate z.B. für Absatz, können per VBA angewendet werden.
Zum Programmieren ist ein Weg, die VBA-Codes (für das Absatz-Format) in Word zu erstellen und dann nach Outlook kopieren.
mfg
Registriert seit: 16.08.2020
Version(en): Office 2024
Hallo, der Weg um an die relevanten Werte kommen, da es keinen Absatz in dem Sinne gibt, führt über den Inspector. beispielhaft so: Code: Sub test() Dim ol As Object, mail As Object, wd As Object, rng As Object Set ol = CreateObject("Outlook.Application") Set mail = ol.CreateItem(0) mail.Display Set wd = mail.GetInspector.WordEditor Set rng = wd.Range(0, 0) With rng.ParagraphFormat .SpaceAfter = 0 'dieser ist vermutlich bei dir standartmäßig auf 12 gesetzt beim mir aber nicht. .SpaceBefore = 0 End With End Sub
Bei mir Win11 prof. O2024 LTSC steht dieser Wert auf 0. Da wurde vermutlich in OL entweder durch Eingriff oder durch eine andere Anwendung dies geändert. Gruß Uwe
Registriert seit: 16.08.2020
Version(en): Office 2024
kleine Ergänzung, falls du mit .HtmlBody dies bauen willst. Dann muss du das im HTML zuweisen. Beispiel mal auf die Schnelle: Code: Option Explicit
Sub test() Dim ol As Object, mail As Object, wd As Object, rng As Object, Abstand& Abstand = 0 ' oder 12, 6, 8 … je nach Bedarf
Set ol = CreateObject("Outlook.Application") Set mail = ol.CreateItem(0) mail.Display Set wd = mail.GetInspector.WordEditor Set rng = wd.Range(0, 0) With rng.ParagraphFormat .SpaceAfter = 0 'dieser ist vermutlich bei dir standartmäßig auf 12 gesetzt beim mir aber nicht. .SpaceBefore = 0 End With With mail mail.HTMLBody = _ "<html>" & _ "<head>" & _ "<style>" & _ "p.MsoNormal { margin-top:0; margin-bottom:" & Abstand & "pt; }" & _ "</style>" & _ "</head>" & _ "<body lang='DE' style='word-wrap:break-word'>" & _ "<div class='WordSection1'>" & _ "<p class='MsoNormal'>Fdsafd</p>" & _ "<p class='MsoNormal'>Dsaf</p>" & _ "<p class='MsoNormal'> </p>" & _ "<p class='MsoNormal'>Gfsdg gfsdg gfdsa gfsda gfsdg fsd gagg</p>" & _ "<p class='MsoNormal'>Gfdgfdgsfdsgf</p>" & _ "<p class='MsoNormal'> </p>" & _ "<p class='MsoNormal'> </p>" & _ "<p class='MsoNormal'>HGFDHg</p>" & _ "<p class='MsoNormal'>hgf</p>" & _ "</div>" & _ "</body>" & _ "</html>" End With End Sub
Gruß Uwe
Registriert seit: 15.02.2026
Version(en): 2010
17.02.2026, 01:21
Vielen Dank Euch allen für die wertvollen Tipps! Nur leider merke ich, dass mir für manche Lösungen etwas das Grundlagenwissen fehlt. Ich bin noch recht am Anfang, was VBA betrifft. Am einfachsten war es daher für mich, weiter mit "With Mail" zu arbeiten und dort dann ".BodyFormat = 1" einzufügen.
Ich merke aber, dass gar kein Abstand bei den Absätzen auch nicht gut aussieht. Ideal wären wohl 6 Punkte Abstand. Gibt es hierfür auch irgendeinen Befehl, den man zwischen "With Mail" und "End Witz" einfügen kann oder ist das nur mit htmlbody möglich?
Registriert seit: 16.08.2020
Version(en): Office 2024
Hallo,
mit .BodyFormat = 1 stellst du nur das Standartformat auf Text.
Entweder du versendest Serienmails via Word. Da gibt es auch verschiedene Wege oder du bereitest das Serienmail mit HTML/CSS entsprechend auf.
Man kann ein Gerüst in Variablen oder Zellen dazu nutzen. 1x Kopf 1x Anrede 1x Text 1x Abgesang. Und dies danach jeweils entsprechend im HTML aufbereitet weiterverarbeiten.
Wobei der simpelste Weg, wenn es schick aussehen soll natürlich via Word ist.
Falls es mit Excel auf jeden Fall sein soll und dir die Erfahrungen mit HTML/CSS fehlen installiere einen simplen HTML/CSS WYSIWYG-Editor und bereite da den Body vor. Kopiere den Quelltext aus dem Editor packe dies in eine Zelle oder direkt .HTMLBody ="Hier dein Quelltext" Das sollte dann auch passen.
Gruß Uwe
Registriert seit: 11.04.2014
Version(en): Office 365
Hallo Georg, warum willst du dich mit Excel & Co herum quälen, um Serienmails zu verschicken. Ich arbeite schon ewig mit diesem Programm: https://www.supermailer.de/. Kostet für Privatanwender einmalig 25 Euro. Ein ganz geniales Programm, mit dem man sogar personalisierte Mails verschicken kann, ähnlich der Serienbrieffunktion von Word.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 26.07.2017
Version(en): 365
Hallo zusammen, ich arbeite seit Jahren mit Excel und Serienbriefen im HTML-Format. Dazu lese ich unterschiedliche Textbausteine aus externen HTML-Dateien im .HTMLBody-Bereich ein und versende das Ganze über Excel mit Outlook. Die Probleme dabei sind Folgende: - Die HTML-Syntax ist standardisiert und wird regelmäßig weiterentwickelt (WHATWG/W3C). Um auf dem Laufenden zu bleiben, muss man sich damit regelmäßig auseinandersetzen.
- Microsoft verwendet innerhalb von Outlook ein eigene Syntax und hält sich nicht genau an den veröffentlichten Standards. Somit gibt es bestimmte Syntaxen (lt. Duden der Plural von Syntax), die MS Outlook ignoriert, andere, die anders "übersetzt" werden. Soweit ich bisher weiß, gibt es seitens MS keine Offenlegung der intern verwendeten Syntaxen.
- MS Outlook wandelt in der Regel die eingelesene HTML-Formatierung in sein eigenes Format um. Man kann das sehr schön überprüfen, wenn man sich den Quelltext einer HTML-Mail innerhalb von Outlook anschaut.
- Mit Versionsänderungen von Outlook verändern sich auch die intern verwendeten HTML-Syntaxen. So kann die gleiche Mail bei Outlook 2003 anders aussehen als bei 365 und umgekehrt.
- Letztendlich kommt es dann auch auf das Empfängersystem an, bei dem die Mail gelesen wird. Hier hat jedes System wieder andere "Interpretationen" der gleichen HTML-Datei: auf welchem Endgerät mit welchem E-Mailprogramm wird das ganze gelesen? Die Darstellungen auf PC/Mac/Tablet/Smartphone usw. sind jeweils (völlig) anders.
Am Ende bleibt übrig: Mit HTML kann man seine Mailtexte formatieren - ja, aber ... Viel Erfolg trotzdem!
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
|