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

HTML Tabelle in Outlook erzeugen

Forumthread: HTML Tabelle in Outlook erzeugen

HTML Tabelle in Outlook erzeugen
18.07.2017 15:29:21
Katie
Hallo zusammen
Ich habe folgendes Problem:
Ich habe ein Excel Sheet mit einer Tabelle; die Tabelle hat mindestens 2 (ausgefüllte) Spalten und kann bis zu 7 Spalten haben.
Nun möchte ich diese Tabelle variabel in eine Outlook E-Mail bringen, d.h. wenn ich 2 Spalten habe möchte ich nur eine Tabelle mit 2 Spalten in der Mail haben, wenn ich 3 Spalten habe dann alle 3.
Die erste Spalte enthält fixe Daten (z.B. Beschreibungen wie "Datum"), Spalte 2-n enthalten dann die tatsächlichen Daten (z.B. 01.01.2017).
Ich habe bisher folgendes versucht (Auszug als Beispiel):
For Spalte = 2 To n
If ThisWorksheet.Cells(15, Spalte) "" Then
Dt = ThisWorksheet.Cells(33, Spalte).Value
Tabelle & Spalte = "
" & _
(...hier folgen weitere Tabellenzeilen)
End If
Next Spalte
Nachher wollte ich in einem HTMLBody Tabelle2 - Tabelle"n" in eine E-Mail bringen.
Die Variable Bennenung "Tabelle & Spalte" funktioniert jedoch nicht.
Hat jemand eine idee, wie ich das Problem lösen könnte?
Ich wäre auch mit einer Lösung zufrieden, die jeweiles einzelne 2-spaltige Tabellen untereinander erzeugt, anstatt einer breiten Tabelle.
AW: HTML Tabelle in Outlook erzeugen
Katie

Hm, da wurde wohl aufgrund des HTML Syntax etwas verhauen...
Hinter "Tabelle & Spalte" = folgt der Code für eine HTML Tabelle; wie das genau aussieht sollte aber für meine Frage nicht relevant sein.
AW: HTML Tabelle in Outlook erzeugen
Tino

Hallo,
kannst mal diesen Code testen.
Tabelle wo die Daten sind musst du natürlich anpassen!
Sub Makro1()
Dim sHTML$
Dim lngRow&, lngCol&
Dim MyOutApp As Object, MyMessage As Object

With Tabelle1 'Tabelle anpassen
lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte Zeile
lngCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 'letzte Spalte
sHTML = RangeToHTML(.Range("A1", .Cells(lngRow, lngCol))) 'Range in HTML
End With

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "Hier kommt die Adresse rein"
.Subject = "hier der Betreff"
.htmlbody = sHTML
' .Attachments.Add 'für Anlagen
.Importance = 2 'Wichtigkeit hoch
.Display
'.Send 'Hier wird die Mail gesendet
End With

Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub

Function RangeToHTML(rng As Range) As String
Dim sPath$
Dim F%

sPath = ThisWorkbook.Path
sPath = sPath & IIf(Right$(sPath, 1) <> "\", "\", "")
sPath = sPath & "TmpHtml.html"

With ThisWorkbook.PublishObjects.Add(xlSourceRange, sPath, _
rng.Parent.Name, rng.Address, xlHtmlStatic, "", "")
.Publish (True)
.AutoRepublish = False
End With

F = FreeFile
Open sPath For Binary As #F
RangeToHTML = Space$(LOF(F))
Get #F, , RangeToHTML
Close
Kill sPath
End Function
Gruß Tino
AW: HTML Tabelle in Outlook erzeugen
Katie

Hallo Tino
Prinzipiell funktioniert der Code, aber ich verwende die Tabelle eigentlich etwas anders.
Dein Code "kopiert" ja die Zellen aus Excel, ich habe vorher die Tabelle mit Daten aus verschiedenen Zelllen befüllt, da ich nicht genau das gleiche Layout in der E-Mail haben möchte.
Das könnte ich jedoch anpassen.
Aber ich benutze in Excel noch in verschiedenen Zellen Steuerelemente, die beim Kopieren dann nicht übernommen werden, diese (bzw. deren ausgewählter Inhalt) fehlen dann in der Mail, das ist problematisch...
dann kann ich nicht helfen.
Tino

Hallo,
kenne Deine Tabelle nicht und auch nicht was du in der Mail haben willst und was nicht.
Ich lass die Frage offen stehen.
Gruß Tino
AW: dann kann ich nicht helfen.
Katie

Tino, dein Code kopiert die Tabelle mit einem "komischen" Einzug in die E-Mail.
Die Tabelle steht dadurch immer in der Mitte.
Kann man das ändern, bzw. wie/wo?
Danke & Gruss
Katie
ersetze center durch left
Tino

Hallo,
schreibe zusätzlich nach der Code-Zeile
sHTML = RangeToHTML(.Range("A1", .Cells(lngRow, lngCol)))

diese
sHTML = Replace(sHTML, "align=center", "align=left")

Gruß Tino
AW: dann kann ich nicht helfen.
Katie

Tino, dein Code kopiert die Tabelle mit einem "komischen" Einzug in die E-Mail.
Die Tabelle steht dadurch immer in der Mitte.
Kann man das ändern, bzw. wie/wo?
Danke & Gruss
Katie
Xl-Steuerelemente sind primär BildObjekte mit ...
Luc:-?

…ZusatzFunktion, Katie,
die kannst du nicht so einfach in HTML übernehmen. Warum benutzt du nicht die von MS vorgesehene HTML-Ausgabe der Datei? Das wird dann sehr viel mehr, könnte aber eher fktsfähig sein…
Ansonsten gibt's ja noch die Möglichkeit, die Xl-Datei als Anlage zu versenden.
Morrn, Luc :-?
Datum: " & Dt & "
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: HTML Tabelle in Outlook erzeugen
18.07.2017 15:37:59
Katie
Hm, da wurde wohl aufgrund des HTML Syntax etwas verhauen...
Hinter "Tabelle & Spalte" = folgt der Code für eine HTML Tabelle; wie das genau aussieht sollte aber für meine Frage nicht relevant sein.
AW: HTML Tabelle in Outlook erzeugen
18.07.2017 15:56:34
Tino
Hallo,
kannst mal diesen Code testen.
Tabelle wo die Daten sind musst du natürlich anpassen!
Sub Makro1()
Dim sHTML$
Dim lngRow&, lngCol&
Dim MyOutApp As Object, MyMessage As Object

With Tabelle1 'Tabelle anpassen
lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte Zeile
lngCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 'letzte Spalte
sHTML = RangeToHTML(.Range("A1", .Cells(lngRow, lngCol))) 'Range in HTML
End With

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "Hier kommt die Adresse rein"
.Subject = "hier der Betreff"
.htmlbody = sHTML
' .Attachments.Add 'für Anlagen
.Importance = 2 'Wichtigkeit hoch
.Display
'.Send 'Hier wird die Mail gesendet
End With

Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub

Function RangeToHTML(rng As Range) As String
Dim sPath$
Dim F%

sPath = ThisWorkbook.Path
sPath = sPath & IIf(Right$(sPath, 1) <> "\", "\", "")
sPath = sPath & "TmpHtml.html"

With ThisWorkbook.PublishObjects.Add(xlSourceRange, sPath, _
rng.Parent.Name, rng.Address, xlHtmlStatic, "", "")
.Publish (True)
.AutoRepublish = False
End With

F = FreeFile
Open sPath For Binary As #F
RangeToHTML = Space$(LOF(F))
Get #F, , RangeToHTML
Close
Kill sPath
End Function
Gruß Tino
Anzeige
AW: HTML Tabelle in Outlook erzeugen
18.07.2017 16:04:03
Katie
Hallo Tino
Prinzipiell funktioniert der Code, aber ich verwende die Tabelle eigentlich etwas anders.
Dein Code "kopiert" ja die Zellen aus Excel, ich habe vorher die Tabelle mit Daten aus verschiedenen Zelllen befüllt, da ich nicht genau das gleiche Layout in der E-Mail haben möchte.
Das könnte ich jedoch anpassen.
Aber ich benutze in Excel noch in verschiedenen Zellen Steuerelemente, die beim Kopieren dann nicht übernommen werden, diese (bzw. deren ausgewählter Inhalt) fehlen dann in der Mail, das ist problematisch...
Anzeige
dann kann ich nicht helfen.
18.07.2017 16:35:03
Tino
Hallo,
kenne Deine Tabelle nicht und auch nicht was du in der Mail haben willst und was nicht.
Ich lass die Frage offen stehen.
Gruß Tino
AW: dann kann ich nicht helfen.
19.07.2017 09:39:03
Katie
Tino, dein Code kopiert die Tabelle mit einem "komischen" Einzug in die E-Mail.
Die Tabelle steht dadurch immer in der Mitte.
Kann man das ändern, bzw. wie/wo?
Danke & Gruss
Katie
Anzeige
ersetze center durch left
19.07.2017 10:07:05
Tino
Hallo,
schreibe zusätzlich nach der Code-Zeile
sHTML = RangeToHTML(.Range("A1", .Cells(lngRow, lngCol)))

diese
sHTML = Replace(sHTML, "align=center", "align=left")

Gruß Tino
AW: dann kann ich nicht helfen.
19.07.2017 10:04:27
Katie
Tino, dein Code kopiert die Tabelle mit einem "komischen" Einzug in die E-Mail.
Die Tabelle steht dadurch immer in der Mitte.
Kann man das ändern, bzw. wie/wo?
Danke & Gruss
Katie
Anzeige
Xl-Steuerelemente sind primär BildObjekte mit ...
19.07.2017 03:46:05
Luc:-?
…ZusatzFunktion, Katie,
die kannst du nicht so einfach in HTML übernehmen. Warum benutzt du nicht die von MS vorgesehene HTML-Ausgabe der Datei? Das wird dann sehr viel mehr, könnte aber eher fktsfähig sein…
Ansonsten gibt's ja noch die Möglichkeit, die Xl-Datei als Anlage zu versenden.
Morrn, Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

HTML Tabelle in Outlook erstellen


Schritt-für-Schritt-Anleitung

Um eine HTML Tabelle in Outlook einzufügen, befolge diese Schritte:

  1. Vorbereitung der Excel Tabelle:

    • Stelle sicher, dass deine Excel Tabelle die gewünschten Daten enthält. Die Tabelle kann bis zu 7 Spalten haben, je nach Bedarf.
  2. VBA Code anpassen:

    • Öffne den Visual Basic for Applications (VBA) Editor in Excel (drücke ALT + F11).
    • Füge folgenden Code in ein neues Modul ein:
    Sub Makro1()
       Dim sHTML As String
       Dim lngRow As Long, lngCol As Long
       Dim MyOutApp As Object, MyMessage As Object
    
       With Tabelle1 ' Tabelle anpassen 
           lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row ' letzte Zeile 
           lngCol = .Cells(1, .Columns.Count).End(xlToLeft).Column ' letzte Spalte 
           sHTML = RangeToHTML(.Range("A1", .Cells(lngRow, lngCol))) ' Range in HTML 
       End With
    
       Set MyOutApp = CreateObject("Outlook.Application")
       Set MyMessage = MyOutApp.CreateItem(0)
       With MyMessage
           .To = "Hier kommt die Adresse rein"
           .Subject = "hier der Betreff"
           .HTMLBody = sHTML
           .Display ' oder .Send um die E-Mail sofort zu senden
       End With
    
       Set MyOutApp = Nothing
       Set MyMessage = Nothing
    End Sub
    
    Function RangeToHTML(rng As Range) As String
       Dim sPath As String
       Dim F As Integer
    
       sPath = ThisWorkbook.Path & "\TmpHtml.html"
       With ThisWorkbook.PublishObjects.Add(xlSourceRange, sPath, _
           rng.Parent.Name, rng.Address, xlHtmlStatic, "", "")
           .Publish (True)
           .AutoRepublish = False
       End With
    
       F = FreeFile
       Open sPath For Binary As #F
       RangeToHTML = Space$(LOF(F))
       Get #F, , RangeToHTML
       Close #F
       Kill sPath
    End Function
  3. HTML Tabelle in Outlook einfügen:

    • Der Code generiert eine HTML Tabelle, die du in den HTMLBody der Outlook E-Mail einfügen kannst.

Häufige Fehler und Lösungen

  • Fehler: "Tabelle & Spalte" funktioniert nicht.

    • Lösung: Stelle sicher, dass du den richtigen Syntax verwendest. Variablen in VBA können nicht so benannt werden. Verwende stattdessen ein Array oder eine andere Methode, um die Tabelle dynamisch zu erstellen.
  • Fehler: "Komischer Einzug" in der E-Mail.

    • Lösung: Füge nach der Zeile sHTML = RangeToHTML(...) folgenden Code hinzu:
    sHTML = Replace(sHTML, "align=center", "align=left")

Alternative Methoden

Wenn du eine HTML Tabelle in Outlook einfügen möchtest, gibt es auch die Möglichkeit, diese manuell zu erstellen:

  1. Erstelle die HTML Tabelle in einem Texteditor.
  2. Kopiere den HTML Code.
  3. Füge den HTML Code in den Outlook Nachrichtentext ein, während du den HTML Modus aktivierst.

Praktische Beispiele

  1. HTML Tabelle mit 2 Spalten:

    <table>
       <tr>
           <td>Datum:</td>
           <td>01.01.2022</td>
       </tr>
       <tr>
           <td>Beschreibung:</td>
           <td>Test</td>
       </tr>
    </table>
  2. HTML Tabelle mit 3 Spalten:

    <table>
       <tr>
           <td>Datum:</td>
           <td>01.01.2022</td>
           <td>Bemerkung</td>
       </tr>
       <tr>
           <td>Beschreibung:</td>
           <td>Test</td>
           <td>Details</td>
       </tr>
    </table>

Tipps für Profis

  • Nutze HTML Codes für Tabellen effizient, um das Layout deiner E-Mails zu optimieren.
  • Experimentiere mit verschiedenen HTML Tags für Tabellen, um ansprechende Designs zu erzielen.
  • Überlege, ob es sinnvoll ist, die gesamte Excel-Datei als Anlage zu versenden, wenn die Tabelle sehr umfangreich ist.

FAQ: Häufige Fragen

1. Wie kann ich eine Excel Tabelle in Outlook einfügen? Du kannst dies tun, indem du den VBA Code nutzt, der die Daten in HTML umwandelt und direkt in die E-Mail einfügt.

2. Was ist der Unterschied zwischen einer HTML Tabelle und einer Excel Tabelle? Eine HTML Tabelle ist für die Anzeige im Web oder in E-Mails optimiert, während eine Excel Tabelle für Berechnungen und Datenmanagement in Excel verwendet wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige