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

HTML-Body für eMail teils aus Zelle holen

Forumthread: HTML-Body für eMail teils aus Zelle holen

HTML-Body für eMail teils aus Zelle holen
19.08.2015 19:48:08
Sebastian
Hallo zusammen.
Ich beiß mir gerade mal wieder die Zähne an einem Makro aus. Ich biete meinen Nutzern die Möglichkeit, in einer Userform eine Bemerkung zu schreiben. DIese wird in Zelle "V8" übernommen.
Nun möchte ich erreichen, dass beim Ausführen des Makro "senden" der html-Body mit einem festen Text ("siehe angehängte Datei") mit dem Inhalt der Zelle "V8" verknüpft wird. Das Layout sollte dabei so ausschauen, dass nach meinem festen Text eine Leerzeile kommt und erst dann der Inhalt von "V8" eingetragen oder angezeigt wird.
Leider komme ich hier nicht weiter.
Private Sub CommandButton1_Click()
ActiveSheet.Unprotect ("erbc")
Range("AD58") = TextBox1.Value
Range("AD60") = TextBox2.Value
Range("V8") = TextBox3.Value
ActiveSheet.Protect ("erbc")
Unload.Me
ActiveWorkbook.SaveAs Range("AD62").Value & ".xlsm"
Dim mePDFD As String
Dim MyOutApp As Object, MyMessage As Object
Rem Pfad und Name der PDF-Datei
pdfName = ThisWorkbook.Path & "\" & Range("AD62") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
mePDFD = ThisWorkbook.Path & "\" & Range("AD62") & ".pdf"
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = Range("AD58").Value
.CC = Range("AD60").Value
.Subject = Range("B2") & " " & Range("B6") & " " & "vom" & " " & Range("U1")
.htmlBody = "
siehe angehängte Datei
fncRangeToHtml(" _
Tabelle 1", "V8")
.Attachments.Add mePDFD
.Display
.Send
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing
Application.Quit
End Sub

Hier noch der ausführliche htmlBody: "siehe angehängte Datei" & fncRangeToHtml("Tabelle 1", "V8")
Vielen Dank schonmal für eure Unterstützung.
Lieben Gruß, Sebastian

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: HTML-Body für eMail teils aus Zelle holen
19.08.2015 21:01:25
Sepp
Hallo Sebastian,
ich würde es mal so versuchen.
.htmlBody = "<p>siehe angehängte Datei</p></br>" & fncRangeToHtml("Tabelle 1", "V8")

Gruß Sepp

Anzeige
AW: HTML-Body für eMail teils aus Zelle holen
19.08.2015 21:27:36
Sebastian
Hallo Sepp,
dein Code funktioniert leider nicht. Mittlerweile habe ich es nach langem probieren hinbekommen. So klappt es:
.htmlBody = "

siehe angehängte Datei


" & Range("V8")
Danke für deine Hilfe
;
Anzeige

Infobox / Tutorial

HTML-Body für eMail aus Zelle in Excel VBA gestalten


Schritt-für-Schritt-Anleitung

Um den HTML-Body für eine E-Mail in Excel VBA zu erstellen, der einen festen Text und den Inhalt einer Zelle kombiniert, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke Alt + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsblatt)", wähle "Einfügen" und dann "Modul".

  3. Kopiere und füge den folgenden Code ein:

    Private Sub CommandButton1_Click()
       Dim MyOutApp As Object, MyMessage As Object
       Dim mePDFD As String
       Dim pdfName As String
    
       ' Setze den Pfad und den Namen der PDF-Datei
       pdfName = ThisWorkbook.Path & "\" & Range("AD62").Value & ".pdf"
       ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
           Quality:=xlQualityStandard, IncludeDocProperties:=False, _
           IgnorePrintAreas:=False, OpenAfterPublish:=False
    
       Set MyOutApp = CreateObject("Outlook.Application")
       Set MyMessage = MyOutApp.CreateItem(0)
    
       With MyMessage
           .To = Range("AD58").Value
           .CC = Range("AD60").Value
           .Subject = Range("B2") & " " & Range("B6") & " " & "vom" & " " & Range("U1")
           .htmlBody = "<p>siehe angehängte Datei</p><br>" & Range("V8").Value
           .Attachments.Add pdfName
           .Display
           .Send
       End With
    
       Set MyOutApp = Nothing
       Set MyMessage = Nothing
    End Sub
  4. Passe die Zellreferenzen an: Stelle sicher, dass die Zellreferenzen zu deinen Anforderungen passen, insbesondere für die E-Mail-Adressen und den Inhalt.

  5. Teste das Makro: Führe das Makro aus, um sicherzustellen, dass der HTML-Body korrekt erstellt wird.


Häufige Fehler und Lösungen

  • Fehler: E-Mail wird nicht gesendet

    • Lösung: Überprüfe, ob Outlook korrekt konfiguriert ist und ob die E-Mail-Adressen in den Zellen gültig sind.
  • Fehler: HTML-Formatierung wird nicht angezeigt

    • Lösung: Stelle sicher, dass du .htmlBody korrekt schreibst und die HTML-Tags entsprechend verwendest.
  • Fehler: PDF-Anhang wird nicht hinzugefügt

    • Lösung: Überprüfe den Pfad zum PDF und stelle sicher, dass die PDF-Datei erfolgreich erstellt wurde.

Alternative Methoden

Falls du eine andere Methode bevorzugst, um den HTML-Body zu erstellen, kannst du auch folgende Ansätze in Betracht ziehen:

  1. Verwende ein HTML-Template: Erstelle ein HTML-Dokument und lade den Inhalt der Zelle in das Template.
  2. Nutze HTML-Formatierungen: Experimentiere mit verschiedenen HTML-Tags wie <b>, <i> usw., um das Layout anzupassen.

Praktische Beispiele

Hier sind einige Beispiele, wie du den HTML-Body anpassen kannst:

  1. Mit zusätzlichem Text:

    .htmlBody = "<p><b>siehe angehängte Datei</b></p><br>" & Range("V8").Value
  2. Mit mehreren Zeilen:

    .htmlBody = "<p>siehe angehängte Datei</p><p>" & Range("V8").Value & "</p>"

Diese Beispiele zeigen, wie du den htmlBody weiter anpassen kannst, um verschiedene Layouts zu erzielen.


Tipps für Profis

  • Verwende Variablen für wiederkehrende Texte: So kannst du deinen Code sauberer und wartungsfreundlicher gestalten.

    Dim introText As String
    introText = "<p>siehe angehängte Datei</p><br>"
    .htmlBody = introText & Range("V8").Value
  • Teste den Code in einer sicheren Umgebung, um unerwartete Fehler zu vermeiden, insbesondere wenn du mit E-Mail-Versand arbeitest.


FAQ: Häufige Fragen

1. Wie kann ich den HTML-Body in anderen Formaten verwenden?
Du kannst den HTML-Body auch für andere E-Mail-Clients verwenden, indem du sicherstellst, dass der HTML-Code kompatibel ist.

2. Was mache ich, wenn ich mehr als eine Zelle einfügen möchte?
Nutze den & Operator, um mehrere Zellinhalte zu kombinieren, z.B. .htmlBody = Range("V8").Value & "<br>" & Range("V9").Value.

3. Funktioniert das auch in Excel 365?
Ja, dieser Code sollte in Excel 365 sowie in anderen Versionen von Excel, die VBA unterstützen, funktionieren.

Experimentiere mit den gegebenen Beispielen und passe sie an deine Bedürfnisse an!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige