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

HTMLBody mit Font

Forumthread: HTMLBody mit Font

HTMLBody mit Font
21.01.2019 22:13:29
Bernd
Hallo,
ich muss für den Emailversand die Firmensignatur verwenden. Ich habe mittlerweile herausgefunden, das die Signatur in .HTMLBody schon drin ist, aber durch meine eigenen Texte überschrieben wird. Das Problem konnte ich im folgenden Codeabschnitt lösen:
.display
Y = .HTMLBody ' Sichert die vorhandene Signatur
Mailtext = "Hallo xyz" & "
" & "anbei der " & Sendemonat & Y
.HTMLBody = Mailtext
Leider wird das in der Variable Mailtext aber in verschiedenen Schriftarten und Größen angezeigt. Wenn ich nun über das Internet gefundene HTML Fontdeklarationen einbaue um eine einheitliche Schrift darzustellen bekomme ich in VBA Komilierungsfehler....
HTML ist für mich ein dickes, unbekanntes Buch.
Vielen Dank im voraus um mir auf die Sprünge zu helfen
Gruß
Bernd
grml... Mailtext sollte nur eine Zeile sein.....
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: HTMLBody mit Font
22.01.2019 06:41:18
Sepp
Hallo Bernd,
das geht z.B. so.
Sub Outlook_Mail()
  Dim objOL As Object, objMail As Object, objWB As Workbook
  Dim strSignature As String, Mailtext As String, Sendemonat As String

  Set objOL = CreateObject("Outlook.Application")
  Set objMail = objOL.CreateItem(0)

  Sendemonat = "Januar"

  Mailtext = "<p style='font-family:Arial, Helvetica, sans-serif; font-size:11pt;'>" & _
    "Hallo xyz" & " " & "anbei der " & Sendemonat & "</p>"

  With objMail
    .GetInspector
    strSignature = "<br>" & .HTMLBody
    .To = "empfänger@domain.com"
    .CC = ""
    .BCC = ""
    .Subject = "Hier kommt die Mail!"
    .HTMLBody = Mailtext & strSignature
    .Display  'or use .Send 
  End With

  Set objMail = Nothing
  Set objOL = Nothing
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: HTMLBody mit Font
22.01.2019 08:59:52
Bernd
Hallo Sepp,
danke für die schnelle Antwort.
Zu meinem Verständnis: Mein Fehler ist, die Variable Mailtext innerhalb von With zu deklarieren?
Dann eine Frage zu font-family: da stehen 3 Font´s drin. Wie verhält sich das in der Ausführung?
Was hat es zu bedeuten, das in der Klammer von objOL.CreateItem mal eine 0,1 oder 2 steht. Das hat mir das WWW noch nicht sagen können.
Gruß
Bernd
Anzeige
AW: HTMLBody mit Font
22.01.2019 09:18:11
Sepp
Hallo Bernd,
ob du den Text innerhalb des With-Rahmens zusammensetzt oder nicht ist egal.
Zur Font-Family: Font-Family weist den Browser oder hier das Mailprogramm an, eine bestimmte Schriftart zu verwenden. Es kann jedoch vorkommen, dass die gewünschte Schrift nicht verfügbar ist, deshalb sind mehrere Angaben möglich. In unserem Beispiel heißt das: Verwende die Schriftfamilie 'Arial', wenn 'Arial' weder auf dem System noch auf der Website verfügbar ist, dann verwende 'Helvetica', ist auch diese nicht verfügbar, dann verwende eine generische Schrift mit dem Schriftstil 'sans-serif'.
Zu .CreateItem(0): 0 steht für den OlItemType 'olMailItem', da wir aber auf die OlItemType Enumeration von Outlook nicht zugreifen können, geben wir einfach den entsprechenden Wert an.
Siehe: https://docs.microsoft.com/en-us/office/vba/api/outlook.olitemtype
 ABCDEF
1Gruß Sepp
2
3

Anzeige
;
Anzeige

Infobox / Tutorial

HTMLBody mit Font anpassen in VBA


Schritt-für-Schritt-Anleitung

  1. Outlook-Objekt erstellen: Zuerst benötigst Du ein Outlook-Objekt. Dies erfolgt mit folgendem Code:

    Set objOL = CreateObject("Outlook.Application")
    Set objMail = objOL.CreateItem(0) ' 0 steht für olMailItem
  2. HTMLBody erstellen: Um die Schriftart und -größe in der E-Mail zu definieren, kannst Du HTML verwenden. Hier ein Beispiel, um die Schriftgröße auf 11pt und die Schriftart auf Arial, Helvetica oder sans-serif zu setzen:

    Mailtext = "<p style='font-family:Arial, Helvetica, sans-serif; font-size:11pt;'>Hallo xyz</p>"
  3. Signatur hinzufügen: Um die Firmensignatur anzuhängen, speichere die vorhandene Signatur in einer Variable:

    strSignature = "<br>" & .HTMLBody
  4. E-Mail zusammenstellen: Füge den gesamten Text und die Signatur in die E-Mail ein:

    .HTMLBody = Mailtext & strSignature
  5. E-Mail anzeigen oder senden: Du kannst die E-Mail entweder anzeigen oder direkt senden:

    .Display  ' oder .Send

Häufige Fehler und Lösungen

  • Komilierungsfehler bei HTML: Wenn Du einen Fehler erhältst, wenn Du HTML im VBA-Code einfügst, überprüfe, ob alle Tags korrekt geschlossen sind. Ein häufiges Problem kann auch die Verwendung von einfachen anstelle von doppelten Anführungszeichen sein.

  • Schriftart wird nicht angezeigt: Stelle sicher, dass die angegebene Schriftart auf dem Computer des Empfängers installiert ist. Andernfalls wird eine Standard-Schrift verwendet.


Alternative Methoden

Eine alternative Methode zur Anpassung der Schriftart ist die Verwendung von CSS in einem <style> Tag innerhalb des HTML-Headers. Dies kann jedoch die Komplexität erhöhen und ist möglicherweise nicht von allen E-Mail-Clients unterstützt.


Praktische Beispiele

Hier ist ein vollständiges Beispiel für eine VBA-Prozedur, die eine E-Mail mit einer angepassten HTMLBody erstellt:

Sub Outlook_Mail()
    Dim objOL As Object, objMail As Object
    Dim strSignature As String, Mailtext As String

    Set objOL = CreateObject("Outlook.Application")
    Set objMail = objOL.CreateItem(0)

    Mailtext = "<p style='font-family:Arial, Helvetica, sans-serif; font-size:11pt;'>Hallo xyz</p>"

    With objMail
        strSignature = "<br>" & .HTMLBody
        .To = "empfänger@domain.com"
        .Subject = "Hier kommt die Mail!"
        .HTMLBody = Mailtext & strSignature
        .Display
    End With

    Set objMail = Nothing
    Set objOL = Nothing
End Sub

Tipps für Profis

  • Verwende CSS: Wenn Du fortgeschrittene Formatierungen wünschst, kann die Verwendung von CSS innerhalb der E-Mail helfen, das Layout zu verbessern.

  • Testen: Teste Deine E-Mails in verschiedenen E-Mail-Clients (z.B. Outlook, Gmail), um sicherzustellen, dass das Design überall gut aussieht.

  • HTML-E-Mail Vorlagen: Überlege, eine bestehende HTML-E-Mail-Vorlage zu verwenden, um Zeit zu sparen und ein konsistentes Design zu gewährleisten.


FAQ: Häufige Fragen

1. Warum funktioniert mein HTML in .HTMLBody nicht? Es könnte an fehlenden oder fehlerhaften HTML-Tags liegen. Überprüfe, ob alle Tags korrekt geschlossen sind.

2. Wie kann ich die Schriftart ändern? Du kannst die Schriftart durch Anpassen der font-family in Deinem HTML-Code ändern, z.B. font-family: Arial, Helvetica, sans-serif;.

3. Was bedeutet die Zahl in CreateItem(0)? Die Zahl steht für den Typ des Outlook-Elements, wobei 0 für olMailItem steht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige