Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formatierungsproblem E-Mail aus Excel

Formatierungsproblem E-Mail aus Excel
28.01.2015 11:00:58
Sascha
Hallo zusammen!
Ich habe folgendes Makro erstellt und komme derzeit durch Recherche nicht mehr weiter:
Sub Email_versenden()
Dim MyOutApp As Object, MyMessage As Object
Dim i As Long
For i = 1 To 25
If Worksheets("E-Mail").Cells(6 + i, 2) = "m" Then
If Worksheets("E-Mail").Cells(6 + i, 5) = "X" Then
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = Worksheets("XXX").Cells(17, 1 + i)
.Subject = "Ihre Bewerbung"
.htmlbody = "Sehr geehrter Herr " & Worksheets
("E-Mail").Cells(6 + i, 3)
& ",'"
& "'zunächst ...
'" & ...
.display
End With
End If
Set MyOutApp = Nothing
Set MyMessage = Nothing
Else
If Worksheets("E-Mail").Cells(6 + i, 2) = "w" Then
If Worksheets("E-Mail").Cells(6 + i, 4) = "X" Then
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = Worksheets("XXX").Cells(17, 1 + i)
.Subject = "Ihre Bewerbung"
.htmlbody = "Sehr geehrte Frau " & Worksheets
("E-Mail").Cells(6 + i, 3)
& ",'"
& "'zunächst ...
'" & ...
.display
End With
End If
End If
Set MyOutApp = Nothing
Set MyMessage = Nothing
End If
Next i
End Sub

ZUR ERKLÄRUNG:
Ich habe eine Datenbank mit persönlichen Informationen unserer Mandanten. Diese bekommen regelmäßig E-Mails und das wollten wir jetzt automatisieren, sodass man nicht jede E-Mail einzeln erstellen muss.
In Tabelle "E-Mail" stehen alle Namen (Nach- und Vorname) der Mandanten, die Daten werden aus Tabelle "XXX" gezogen (auch die E-Mailadresse).
In der Tabelle "E-Mail" soll dann lediglich ausgewählt werden, wer eine E-Mail erhalten soll. (If Worksheets("E-Mail").Cells(6 + i, 4) = "X" Then) und auf Button-Druck werden dann die E-Mails erstellt.
(Mit "If Worksheets("E-Mail").Cells(6 + i, 2) = "m" Then" wird die Anrede bestimmt)
Soweit funktioniert das Makro auch, jedoch konnte ich bei meiner Recherche nicht herausfinden, wie ich die Textformatierung auch auf die Nachnamen der Mandanten (in der erstellten E-Mail) anwenden kann. Die gesamte E-Mail muss nach den Vorgaben unseres CD erstellt sein, deswegen ist die Formatierung so wichtig.
Kennt hier jemand eine Möglichkeit?
Wenn ich "Worksheets("E-Mail").Cells(6 + i, 3).font.colorindex = 3" eingebe bzw. "Worksheets("E-Mail").Cells(6 + i, 3).font.name ="Arial"", dann gibt er die Email mit dem Inhalt "0" aus. (Hier wäre auch die Frage, wie ich Schriftart und -farbe verknüpfen kann).
Vielen Dank für Eure Mühen!
Grüße Sascha
P.S.: Die "'" vor den html-Formatierungsbefehlen habe ich eingefügt, dass man sehen kann wie der Code aufgebaut ist. Der Text ist natürlich wesentlich länger inkl. Fußnoten. Der Übersichthalber habe ich diesen aber weggelassen.

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

Betreff
Datum
Anwender
Anzeige
AW: Formatierungsproblem E-Mail aus Excel
28.01.2015 12:17:51
mumpel
Hallo!
1. Das Font-Tag ist ungünstig, nimm besser das Span-Tag
2. Die Farbe kannst Du nicht 1:1 übernehmen. Die Farbe müsstest Du zuerst umrechnen.
3. Die Textgröße aus Excel kannst Du auch nicht 1:1 übernehmen. Zur Umrechnung fehlt mir allerdings eine Berechnung. 16.5px entsprechen (bei Arial) der Schriftgröße 12,5.
4. Zuviel Code, der lässt sich ausdünnen.
Kleines Beispiel (nur die Anrede ist farbig) zur Übernahme der Zellen-Schriftfarbe nach HTML. Habe den Code auch gleich mal ausgedünnt.
Sub Email_versenden()
    Dim olApp      As Object
    Dim strAnrede  As String
    Dim strName    As String
    Dim strFntClr  As String
    

        If Worksheets("E-Mail").Range("A1").Value = "m" And _
           Worksheets("E-Mail").Range("B1").Value = "X" Then
               strAnrede = "Sehr geehrter Herr "
               strFntClr = FarbeInHtml(Range("A3").Font.Color)
               strName = Range("A3").Value
        ElseIf Worksheets("E-Mail").Range("A1").Value = "w" And _
               Worksheets("E-Mail").Range("B1").Value = "X" Then
               strAnrede = "Sehr geehrte Frau "
               strFntClr = FarbeInHtml(Range("A3").Font.Color)
               strName = Range("A3").Value
        Else
               Exit Sub
        End If

        
               Set olApp = CreateObject("Outlook.Application")
               
               With olApp.CreateItem(0)
                    .To = Worksheets("E-Mail").Range("C1").Value
                    .Subject = "Ihre Bewerbung"
                    .htmlBody = "<span style='color:" & strFntClr & "; " & _
                                "font-family:Arial; font-size:16.5px'>" & strAnrede & _
                                strName & "</span>,<br><br>" & _
                                "anbei gewünschte Unterlagen.<br><br>" & _
                                "Mit freundlichen Grüßen,<br>Max Mustermann"
                                
                    .display
                End With
            

End Sub

Public Function FarbeInHtml(ByVal lngRGB As Long) As String
FarbeInHtml = Right$("000000" & Hex$(lngRGB), 6)
FarbeInHtml = "#" & Right$(FarbeInHtml, 2) & Mid$(FarbeInHtml, 3, 2) & Left$(FarbeInHtml, 2)
End Function

VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15

Gruß, René

Anzeige
Nachtrag
28.01.2015 12:40:55
mumpel
Hier komplett. Übernommen werden Schriftart, Schriftgröße und Schriftfarbe.
Sub Email_versenden()
    Dim olApp      As Object
    Dim strAnrede  As String
    Dim strName    As String
    Dim strFntClr  As String
    Dim strFntArt  As String
    Dim strFntSiz  As String

        If Worksheets("E-Mail").Range("A1").Value = "m" And _
           Worksheets("E-Mail").Range("B1").Value = "X" Then
               strAnrede = "Sehr geehrter Herr "
               strFntClr = FarbeInHtml(Range("A3").Font.Color)
               strFntArt = Range("A3").Font.Name
               strFntSiz = Range("A3").Font.Size
               strName = Range("A3").Value
        ElseIf Worksheets("E-Mail").Range("A1").Value = "w" And _
               Worksheets("E-Mail").Range("B1").Value = "X" Then
               strAnrede = "Sehr geehrte Frau "
               strFntClr = FarbeInHtml(Range("A3").Font.Color)
               strFntArt = Range("A3").Font.Name
               strFntSiz = Range("A3").Font.Size
               strName = Range("A3").Value
        Else
               Exit Sub
        End If

        
               Set olApp = CreateObject("Outlook.Application")
               
               With olApp.CreateItem(0)
                    .To = Worksheets("E-Mail").Range("C1").Value
                    .Subject = "Ihre Bewerbung"
                    .htmlBody = "<span style='color:" & strFntClr & "; " & _
                                "font-family:" & strFntArt & "; font-size:" & strFntSiz & _
                                "pt'>" & strAnrede & strName & "</span>,<br><br>" & _
                                "anbei gewünschte Unterlagen.<br><br>" & _
                                "Mit freundlichen Grüßen,<br>Max Mustermann"
                                
                    .display
                End With
            

End Sub

Public Function FarbeInHtml(ByVal lngRGB As Long) As String
FarbeInHtml = Right$("000000" & Hex$(lngRGB), 6)
FarbeInHtml = "#" & Right$(FarbeInHtml, 2) & Mid$(FarbeInHtml, 3, 2) & Left$(FarbeInHtml, 2)
End Function

VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15


Anzeige
AW: Nachtrag
28.01.2015 16:00:47
Sascha
Hallo René!
Vielen Dank für Deine Hilfe!
Habe es entsprechend umgesetzt bzw. meinen Code angepasst. Funktioniert jetzt 1a!
Grüße Sascha

285 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige