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

Forumthread: VBA Mailtext farbig hinterlegen

VBA Mailtext farbig hinterlegen
18.02.2021 14:02:43
Burkhard
Hallo,
in unten stehendem Makro wird ein Text für eine Mail erzeugt.
Nun möchte ich gerne das die beiden "fetten" Zeilen farbig (gelb) markiert werden, sofern die Zellen gefüllt sind. Sind die Zellen leer, soll auch nichts markiert werden.
Gruß Burkhard
Sub Mail_Abmeldung()
Dim olApp As Object
Dim olOldBody As String
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .htmlBody
.To = Range("b1").Value
.CC = Range("c1").Value
.BCC = Range("a1").Value
.Subject = "Termin für Reparatur/Wartung/Gasabmeldung " & Range("c5").Value
.htmlBody = "Hallo Kollegen ,
" & _ "folgenden Motor bitte abmelden
" & _ "Anlagenname: " & Range("c5").Value & "
" & _ "Anlage: " & Range("c11").Value & "
" & _ Range("b12").Value & " " & Range("c12").Value & "
" & _ "Tätigkeit: " & Range("c6").Value & "
" & _ "Startdatum: " & Range("g12").Value & " " & Range("g10").Value & "
" & _ "Enddatum: " & Range("g13").Value & " " & Range("g11").Value & "
" & _ "
" & _ "
" & _ Range("b13").Value & " " & Range("c13").Value & "
" & _ Range("b14").Value & " " & Range("c14").Value & "
" & _
olOldBody End With If MsgBox("Neue Meldung?", vbYesNo) = vbYes Then 'MsgBox "Ja" Else Range("c4:c10").ClearContents ThisWorkbook.Close savechanges = False End If End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Mailtext farbig hinterlegen
18.02.2021 15:46:01
Rudi
Hallo,
dann musst du entsprechende HTML-Tags in deinen Text aufnehmen.
Hast du deinen Code mal getestet? Der gesamte Text steht in einer Zeile.
Gruß
Rudi
AW: VBA Mailtext farbig hinterlegen
18.02.2021 15:55:53
volti
Hallo zusammen,
die Forumssoftware macht HTML-Tags zunichte. So führen z.B. "<br>"-Tags zu einem Umbruch und der gesamte Text ist nicht mehr les- und laufbar.
Daher müssen "<" und ">" umgesetzt werden in "& lt;" und "& gt;" (ohne leer)
Gruß
Karl-Heinz
Anzeige
AW: VBA Mailtext farbig hinterlegen
18.02.2021 16:13:46
Burkhard
Hier nochmal der Code mit den Zeilen nach Karl-Heinz Hinweis geänderten Zeichen.
Sub Mail_Abmeldung()
Dim olApp As Object
Dim olOldBody As String
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .htmlBody
.To = Range("b1").Value
.CC = Range("c1").Value
.BCC = Range("a1").Value
.Subject = "Termin für Reparatur/Wartung/Gasabmeldung " & Range("c5").Value
.htmlBody = "Hallo Kollegen ,& lt;br>& lt;br>" & _
"folgenden Motor bitte abmelden& lt;br">" "<"br">"" & _
"Anlagenname: " & Range("c5").Value & "<"br">" & _
"Anlage: " & Range("c11").Value & "<"br">" & _
Range("b12").Value & " " & Range("c12").Value & "<"br">" & _
"Tätigkeit:  " & Range("c6").Value & "<"br">" & _
"Startdatum: " & Range("g12").Value & " " & Range("g10").Value & "<"br">" & _
"Enddatum:  " & Range("g13").Value & " " & Range("g11").Value & "<"br">" & _
"<"br">" & _
Range("b13").Value & " " & Range("c13").Value & "<"br">" & _
Range("b14").Value & " " & Range("c14").Value & "<"br">" & _
olOldBody
End With
If MsgBox("Neue Meldung?", vbYesNo) = vbYes Then
'MsgBox "Ja"
Else
Range("c4:c10").ClearContents
ThisWorkbook.Close savechanges = False
End If
End Sub

Anzeige
AW: VBA Mailtext farbig hinterlegen
18.02.2021 15:58:16
Burkhard
Hallo Rudi,
der Text steht nicht in einer Reihe... Gott sei dank ;-)
Mit der Anordnung innerhalb der Mail bin ich zufrieden.....
Die Mail sieht aus, wie unten. Statt der X stehen da natürlich verschiedene Bezeichnungen.
Die letzten beiden Punkte vor der Signatur möchte ich eben hinterlegt haben, sofern die Felder gefüllt sind.
Das mit den HTML-Tags habe ich versucht wie ich es bei dieser großen bekannten Suchseite gefunden habe. Das hat aber nicht mal soweit funktioniert, dass ich den Code testen konnte.
Darum wäre ich um ein Beispiel in der Zeile
Range("b14").Value & " " & Range("c14").Value & " " & _
dankbar.
Hallo Kollegen ,
folgenden Motor bitte abmelden
Anlagenname: Eugen
Anlage: XXX
Malo Strom: XXX
Tätigkeit: Wartung mit Oelwechsel
Startdatum: XXX
Enddatum: XXX
Malo Gas: XXX
Subbilanzkonto: XXX
Signatur
Anzeige
AW: VBA Mailtext farbig hinterlegen
18.02.2021 15:50:42
volti
Hallo Burkhard,
hier mal eine Idee zu Deiner Frage: (ggf. noch anpassbar...)
Code:

[Cc][+][-]

Sub Mail_Abmeldung() Dim sCol(1) As String sCol(0) = "<span style='background-color:#ffffff'>" sCol(1) = "<span style='background-color:#ffff00'>" With CreateObject("Outlook.Application").CreateItem(0) .GetInspector.Display .To = Range("b1").Value .CC = Range("c1").Value .BCC = Range("a1").Value .Subject = "Termin für Reparatur/Wartung/Gasabmeldung " & Range("c5").Value .htmlBody = "Hallo Kollegen ,<br><br>" _ & "folgenden Motor bitte abmelden<br>" _ & "Anlagenname: " & Range("c5").Value & "<br>" _ & "Anlage: " & Range("c11").Value & "<br>" _ & Range("b12").Value & " " & Range("c12").Value & "<br>" _ & "Tätigkeit: " & Range("c6").Value & "<br>" _ & "Startdatum: " & Range("g12").Value & " " & Range("g10").Value & "<br>" _ & "Enddatum: " & Range("g13").Value & " " & Range("g11").Value & "<br><br>" _ & IIf(Range("B13").Value = "", sCol(0), sCol(1)) & Range("B13").Value & "</span> " _ & IIf(Range("C13").Value = "", sCol(0), sCol(1)) & Range("C13").Value & "</span><br>" _ & IIf(Range("B14").Value = "", sCol(0), sCol(1)) & Range("B14").Value & "</span> " _ & IIf(Range("C14").Value = "", sCol(0), sCol(1)) & Range("C14").Value & "</span><br>" _ & .htmlBody End With If MsgBox("Neue Meldung?", vbYesNo) = vbYes Then ' MsgBox "Ja" Else Range("c4:c10").ClearContents ThisWorkbook.Close savechanges = False End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: VBA Mailtext farbig hinterlegen
18.02.2021 16:20:40
Burkhard
Hallo Volti,
Phantastisch!
Funktioniert wie gewollt.
Danke für die sehr schnelle Lösung.
Gruß Burkhard
AW: VBA Mailtext farbig hinterlegen
18.02.2021 16:42:13
volti
Hallo Burkhard,
vielen Dank für die positive Rückmeldung.
Eine kleine Anmerkung:
Eigentlich könnte man sich die IIF-Abfrage auch sparen und das immer gelb machen. Wenn die Felder leer sind => Gelbes leeres Nix sieht man ja nicht. :-)
Aber das fiel mir erst hinterher auf. Und es kann auch so bleiben....
Einen schönen Resttag wünsche ich
Karl-Heinz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

VBA für farbige Hinterlegung von Mailtext in Outlook


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe in den VBA-Editor (Alt + F11).

  2. Füge ein neues Modul ein: Rechtsklick auf "VBAProject (DeinDateiname)", dann "Einfügen" > "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub Mail_Abmeldung()
        Dim olApp As Object
        Dim olOldBody As String
        Dim sCol(1) As String
    
        sCol(0) = "<span style='background-color:#ffffff'>"
        sCol(1) = "<span style='background-color:#ffff00'>"
    
        Set olApp = CreateObject("Outlook.Application")
        With olApp.CreateItem(0)
            .GetInspector.Display
            olOldBody = .htmlBody
            .To = Range("b1").Value
            .CC = Range("c1").Value
            .BCC = Range("a1").Value
            .Subject = "Termin für Reparatur/Wartung/Gasabmeldung " & Range("c5").Value
            .htmlBody = "Hallo Kollegen ,<br><br>" & _
            "folgenden Motor bitte abmelden<br>" & _
            "Anlagenname: " & Range("c5").Value & "<br>" & _
            "Anlage: " & Range("c11").Value & "<br>" & _
            Range("b12").Value & " " & Range("c12").Value & "<br>" & _
            "Tätigkeit:  " & Range("c6").Value & "<br>" & _
            "Startdatum: " & Range("g12").Value & " " & Range("g10").Value & "<br>" & _
            "Enddatum:  " & Range("g13").Value & " " & Range("g11").Value & "<br><br>" & _
            IIf(Range("B13").Value = "", sCol(0), sCol(1)) & Range("B13").Value & "</span> " & _
            IIf(Range("C13").Value = "", sCol(0), sCol(1)) & Range("C13").Value & "</span><br>" & _
            IIf(Range("B14").Value = "", sCol(0), sCol(1)) & Range("B14").Value & "</span> " & _
            IIf(Range("C14").Value = "", sCol(0), sCol(1)) & Range("C14").Value & "</span><br>" & _
            olOldBody
        End With
    
        If MsgBox("Neue Meldung?", vbYesNo) = vbYes Then
        Else
            Range("c4:c10").ClearContents
            ThisWorkbook.Close savechanges = False
        End If
    End Sub
  4. Fülle die entsprechenden Zellen in deinem Excel-Dokument aus (B1, C1, A1, etc.).

  5. Führe das Makro aus, um die Mail mit dem farblich hinterlegten Text zu senden.


Häufige Fehler und Lösungen

  • Fehler: HTML-Tags werden nicht korrekt dargestellt

    • Lösung: Achte darauf, dass die HTML-Tags korrekt im Code implementiert sind. Verwende <span>-Tags für die farbige Hinterlegung.
  • Fehler: Mail wird nicht gesendet

    • Lösung: Stelle sicher, dass Outlook korrekt installiert und konfiguriert ist. Überprüfe auch, ob die angegebenen E-Mail-Adressen gültig sind.

Alternative Methoden

  • Du kannst auch HTML-Templates verwenden, um die E-Mail in Outlook zu formatieren. Erstelle eine .html-Datei mit dem gewünschten Layout und lade sie in dein Makro.

  • Eine andere Möglichkeit ist die Verwendung von Excel-Formeln, um Texte farblich zu markieren, bevor du sie in die E-Mail überträgst. Hierbei kannst du die Funktion TEXTFARBE() in Verbindung mit VBA nutzen.


Praktische Beispiele

Wenn du den oben genannten Code anwendest, wird der Text in deiner E-Mail wie folgt aussehen:

  • Wenn B13 und C13 gefüllt sind, wird der Text gelb hinterlegt:

    Malo Gas: XXX (gelb hinterlegt)
    Subbilanzkonto: XXX (gelb hinterlegt)
  • Wenn die Zellen leer sind, bleibt der Text unverändert.


Tipps für Profis

  • Nutze Fehlerbehandlungsroutinen in deinem VBA-Code, um mögliche Laufzeitfehler abzufangen.
  • Experimentiere mit verschiedenen Farb- und Schriftoptionen in HTML, um deine E-Mails ansprechender zu gestalten.
  • Überlege, Datenvalidierungen in Excel einzuführen, um sicherzustellen, dass die Eingaben vor dem Versenden der E-Mail korrekt sind.

FAQ: Häufige Fragen

1. Wie kann ich die Schriftfarbe in Outlook ändern?
Du kannst die Schriftfarbe in HTML ändern, indem du den style-Attribut in deinem <span>-Tag anpasst, z.B. style='color:red'.

2. Was mache ich, wenn mein Makro nicht funktioniert?
Überprüfe, ob alle Zellreferenzen im Code korrekt sind. Stelle auch sicher, dass die Sicherheitseinstellungen in Excel das Ausführen von Makros erlauben.

3. Kann ich mehrere Empfänger hinzufügen?
Ja, du kannst die E-Mail-Adressen in den Feldern To, CC und BCC durch Kommas trennen, um mehrere Empfänger hinzuzufügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige