Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1740to1744
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

Schriftart .htmlBody / "Kettenbrief"

Schriftart .htmlBody / "Kettenbrief"
20.02.2020 14:31:57
Mike
Hallo Zusammen
Ich habe mir einmal ein nettes Makro erstellt, damit ich aus einer Excel Tabelle heraus, E-Mails versenden kann.
Bin schon ziemlich weit gekommen, aber zwei Sachen funktioniere nicht, oder ich bekomme es einfach nicht hin.
Erstens:
Wie kann ich in dem Code die Schriftart auf Arial 10 ändern?
Ich habe bereits alles mit usw. ausprobiert, aber ich bekomme immer wieder Fehlermeldungen.
Hier der Code:
Option Explicit

Public Sub EmailMitSignatur()
Dim olApp       As Object
Dim olMail      As Object
Dim strOldBody  As String
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.Createitem(0)
With olMail
.GetInspector.Display
strOldBody = .htmlBody
.To = Sheets("Tabelle1").Range("K2")
.Subject = "Fehlende Auftragsbestätigung Bestellung " & Sheets("Tabelle1").Range("A2")
.htmlBody = "Guten Tag
" & _ "Wir haben leider bis heute keine Auftragsbestätigung zu unserer _ Bestellung (Tabelle1, FeldA2) erhalten.
" & _ "Könnten Sie uns diese bitte baldmöglichst zukommen lassen.
" & _ strOldBody End With End Sub

Zweitens
Die Excel Tabelle hat mehrere Zeilen und ich möchte, dass es mir jeweils, sobald ich das Makro aktiviere, aus jeder Zeile welche Daten in Spalte A hat, eine Mail generiert.
Bis jetzt habe ich das Makro aktiviert, eine Mail anhand der Daten aus Zeile 2 wurde erstellt, die Zeile 2 wieder gelöscht und das Makro wieder aktiviert, usw.. Halt alles "umständlich".
Besteht die Möglichkeit, dies irgendwie zu "automatisieren" ?
Besten Dank für Eure Hilfe.
M

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schriftart .htmlBody / "Kettenbrief"
20.02.2020 14:36:26
Mike
Ganz vergessen:
Drittens
Wie kann ich in der Zeile: Wir haben leider bis heute keine Auftragsbestätigung zu unserer Bestellung (Tabelle1, FeldA2) erhalten, die Daten aus Feld A2 nehmen?
Wenn ich das so lösen: "Wir haben leider bis heute keine Auftragsbestätigung zu unserer Bestellung " & Sheets("Tabelle1").Range("A2")"erhalten.
" & _
Kommt Fehler beim Kompilieren, Erwartet Anweisungsende...
Danke
M
AW: Schriftart .htmlBody / "Kettenbrief"
20.02.2020 15:35:32
volti
Hallo,
zu 1.:
Am einfachsten so:
.Subject = "Fehlende Auftragsbestätigung Bestellung "<span style='font-family:Arial;font-size:10pt;'>" & Sheets("Tabelle1").Range("A2") & "</span>"
Oder Du benutzt u.a. Makro, dass die Formatierung direkt aus der Excelzelle übernimmt:
.Subject = "Fehlende Auftragsbestätigung Bestellung " & GetHTML(Sheets("Tabelle1").Range("A2"))
Function GetHTML(obj As Range, Optional bHG As Boolean) As String
'Funktion setzt die Formatierung einer Zelle in HTML um
 Dim i As Integer, sTxt As String, iCol As Variant, f() As String
 f = Split("&LT;span style=',,,,,&LT;span&GT;,&LT;strong&GT;,&LT;i&GT;,&LT;u&GT;,&LT;/span&GT;,&LT;/strong&GT;,&LT;/i&GT;,&LT;/u&GT;,&LT;br&GT;,*Fett*,*Kursiv*, ", ",")
 With obj.Font
  sTxt = f(0) & "font-size:" & .Size & "pt;font-family:""" & .Name & """;"
  iCol = .Color
  If IsNull(iCol) Then iCol = 0 Else sTxt = sTxt & GetHexColor(.Color)
  If obj.Interior.ColorIndex &LT;&GT; xlNone And bHG Then _
     sTxt = sTxt & ";background-" & GetHexColor(obj.Interior.Color)
  sTxt = sTxt & "'&GT;"
  For i = 1 To Len(obj.value)
   With obj.Characters(i, 1).Font
    If .Color &LT;&GT; iCol And f(1) = "" Then
      iCol = .Color: f(1) = f(5)
      sTxt = sTxt & f(0) & GetHexColor(.Color) & "'&GT;"
    End If
    If .FontStyle Like f(14) And f(2) = "" Then sTxt = sTxt & f(6):       f(2) = f(10)
    If .FontStyle Like f(15) And f(3) = "" Then sTxt = sTxt & f(7):       f(3) = f(11)
    If .Underline &LT;&GT; xlNone And f(4) = "" Then sTxt = sTxt & f(8):        f(4) = f(12)
    If .Underline = xlNone And f(4) &LT;&GT; "" Then sTxt = sTxt & f(12):       f(4) = ""
    If Not .FontStyle Like f(15) And f(3) &LT;&GT; "" Then sTxt = sTxt & f(11): f(3) = ""
    If Not .FontStyle Like f(14) And f(2) &LT;&GT; "" Then sTxt = sTxt & f(10): f(2) = ""
    sTxt = sTxt & Replace(Mid$(obj.value, i, 1), vbLf, f(13))
    If .Color &LT;&GT; iCol And f(1) &LT;&GT; "" Then iCol = .Color: f(1) = "": sTxt = sTxt & f(9)
   End With
  Next i
  GetHTML = Replace(sTxt & f(4) & f(3) & f(2) & f(1) & f(9), "  ", f(16) & f(16))
 End With
End Function
Function GetHexColor(oCol As Variant) As String
  GetHexColor = "color:#" _
  & Right("00" & Hex(oCol And vbRed), 2) _
  & Right("00" & Hex((oCol And vbGreen) \ &H100), 2) _
  & Right("00" & Hex((oCol And vbBlue) \ &H10000), 2)
End Function
viele Grüße
Karl-Heinz

Anzeige
AW: Schriftart .htmlBody / "Kettenbrief"
20.02.2020 15:54:33
Mike
Hallo
Es geht um den .htmlBody, nicht um .Subject.
Oder kann ich das auch da umsetzen?
Danke
AW: Schriftart .htmlBody / "Kettenbrief"
20.02.2020 16:08:02
volti
Sorry,
na klar. Habe ich mich vertan. Im Subject macht das keinen Sinn.
Aber auf den HTMLbody kannst Du es ja genauso anwenden. Den gewünschten Text in den Span-Tag einbetten, ohne den strOldBody, der ja die Signatur enthält.
"<span style='font-family:Arial;font-size:10pt;'>Guten Tag
" & _
"Wir haben leider bis heute keine Auftragsbestätigung zu unserer _
Bestellung (Tabelle1, FeldA2) erhalten.
" & _
"Könnten Sie uns diese bitte baldmöglichst zukommen lassen.</span>
" & _
strOldBody
Und die GetHTML-Form gilt nur für Excel-Zellen...
Anzeige
AW: Schriftart .htmlBody / "Kettenbrief"
20.02.2020 16:44:32
Mike
Das funktioniert einwandfrei.
Besten Dank
Nun noch eine Frage:
Die Excel Tabelle hat mehrere Zeilen und ich möchte, dass es mir jeweils, sobald ich das Makro aktiviere, aus jeder Zeile welche Daten in Spalte A hat, eine Mail generiert.
Bis jetzt habe ich das Makro aktiviert, eine Mail anhand der Daten aus Zeile 2 wurde erstellt, die Zeile 2 wieder gelöscht und das Makro wieder aktiviert, usw.. Halt alles "umständlich".
Besteht die Möglichkeit, dies irgendwie zu "automatisieren" ?
Hier der neue Code:
Option Explicit
Public Sub EmailMitSignatur()
Dim olApp       As Object
Dim olMail      As Object
Dim strOldBody  As String
Dim probleme    As Variant
probleme = Sheets("Tabelle1").Range("A2").Value
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.Createitem(0)
With olMail
.GetInspector.Display
strOldBody = .htmlBody
.To = Sheets("Tabelle1").Range("K2")
.Subject = "Fehlende Auftragsbestätigung Bestellung " & Sheets("Tabelle1").Range("A2")
.htmlBody = "Guten Tag
" & _ "Wir haben leider bis heute keine Auftragsbestätigung zu unserer _ Bestellung " & probleme & " erhalten.
" & _ "Könnten Sie uns diese bitte baldmöglichst zukommen lassen.
" _ & _ strOldBody End With End Sub

Anzeige
AW: Schriftart .htmlBody / "Kettenbrief"
20.02.2020 19:37:23
volti
Hallo Mike,
schau mal ob dieses hier passt (ungetestet)
Option Explicit
Public Sub EmailMitSignatur()
  Dim WSh As Worksheet, iZeile As Long
  Dim olApp       As Object
  Dim olMail      As Object
  Dim strOldBody  As String
  Set WSh = ThisWorkbook.Sheets("Tabelle2")
  Set olApp = CreateObject("Outlook.Application")
 
  For iZeile = 2 To WSh.UsedRange.Rows.Count
   If WSh.Cells(iZeile, "A").value &LT;&GT; "" Then
    Set olMail = olApp.Createitem(0)
    With olMail
      .GetInspector.display
      strOldBody = .HTMLBody
      .to = WSh.Range("K" & iZeile)
      .Subject = "Fehlende Auftragsbestätigung Bestellung " & WSh.Range("A" & iZeile)
      .HTMLBody "&LT;span style='font-family:Arial;font-size:10pt;'&GT;Guten Tag&LT;br&GT;" _
       & "Wir haben leider bis heute keine Auftragsbestätigung zu unserer Bestellung " _
       & WSh.Range("A" & iZeile).value & " erhalten.&LT;br&GT;" _
       & "Könnten Sie uns diese bitte baldmöglichst zukommen lassen.&LT;/span&GT;" _
       & strOldBody
       .display
      '.send
    End With
    Set olMail = Nothing
   End If
  Next iZeile
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: Schriftart .htmlBody / "Kettenbrief"
21.02.2020 11:19:42
Mike
Funktioniert einwandfrei.
Besteht die Möglichkeit, nicht die Standard Signatur zu nehmen sondern eine spezifische?
Die Nachricht wendet sich auch an Englisch sprechende und da brauch ich eine andere Signatur.
Geht das?
Besten Dank jetzt schon für deine riesen Hilfe.
Gruss
M
AW: Schriftart .htmlBody / "Kettenbrief"
21.02.2020 11:34:16
volti
Hallo Mike,
das weiß ich leider nicht.
Wenn ich das brauchen würde, würde ich mir selbst einfach eine programmieren. (in HTML)
Übrigens relativ einfach auch über o.a. GetHTML() möglich. Indem Du das einfach in ein/zwei Zellen schreibst und dort per Excel formatiert.
Falls Du das so machen möchtest und auch Bilder brauchen solltest, melde Dich hier nochmal. Es gibt auch noch Range2HTML...
viele Grüße
Karl-Heinz
Anzeige
AW: Schriftart .htmlBody / "Kettenbrief"
21.02.2020 13:28:48
Mike
Danke fürs Helfen.
Könnte ich die Signatur also einfach ins Makro reinpacken?
Wäre natürlich auch eine Idee, wenn das geht.
Gruss
M
AW: Schriftart .htmlBody / "Kettenbrief"
21.02.2020 14:47:31
volti
Hallo Mike,
Du kannst eine Signatur direkt in HTML in VBA dazupacken. Siehe auch den Span-Tag.
Dafür brauchst Du HTML-Kenntnisse.
Hier ein Beispiel wie eine einfache Signatur (ohne Bild) via GetHTML gehen könnte:
EMail-Signaturbeispiel.xlsb
viele Grüße
Karl-Heinz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige