Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenbereich neben Text in Email einfügen.

Tabellenbereich neben Text in Email einfügen.
12.06.2016 15:34:59
Sebastian
Guten Tag zusammen,
ich generiere aus Excel heraus eine Email in der automatisch Betreff und gewisse Textbausteine in den HTML-Body übernommen werden.
Nun möchte ich noch einen Tabellenbereich als Tabelle unter den Text in der Email:
Range("H6:N18")
Leider geht dies nicht einfach via Paste. Hier der Code:
Sub Email_generieren()
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.to = ActiveCell.Offset(0, 1).Value
.Subject = Range("B1").Value & " " & Range("C1").Value
.Body = "Guten Morgen " & ActiveCell.Value & "," & vbNewLine _
& vbNewLine & "Anbei ihre Note aus dem Bereich " & Range("C1").Value & "." & vbNewLine _
& "Sie haben " & ActiveCell.Offset(0, 2).Value & " von " & Range("E3").Value & "  _
Gesamtpunkten erreicht. " _
& "Das ergibt die Note " & ActiveCell.Offset(0, 3).Value & "." & vbNewLine _
& vbNewLine & "Im folgenden finden Sie eine Übersicht zur Notenverteilung im Kurs, den  _
Notendurchschnitt des Kurses und den Notenschlüssel" _
& vbNewLine & vbNewLine _
'    & Range("H2:N18").Paste (HIer soll der Tabellenbereich hinkopiert werden)
'Nachricht zur Kontrolle anzeigen
.Display
End With
End Sub
Habt ihr vielleicht eine Lösung für mein Problem? Vielen Dank.
Sebastian Lyschik

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Tabellenbereich neben Text in Email einfügen.
12.06.2016 15:54:21
Sebastian
Hmm,
vielen Dank, habe versucht den Range festzulegen und dies dann via Befehl an die entsprechende Stellle einzufügen. Das funktioniert leider gar nicht
Sub Email_generieren()
'Tabellenbereich einfügen'
Dim rng As Range
Set rng = Range("H6:N18").Select
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = ActiveCell.Offset(0, 1).Value
.Subject = Range("B1").Value & " " & Range("C1").Value
.Body = "Guten Morgen " & ActiveCell.Value & "," & vbNewLine _
& vbNewLine & "Anbei ihre Note aus dem Bereich " & Range("C1").Value & "." & vbNewLine _
& "Sie haben " & ActiveCell.Offset(0, 2).Value & " von " & Range("E3").Value & "  _
Gesamtpunkten erreicht. " _
& "Das ergibt die Note " & ActiveCell.Offset(0, 3).Value & "." & vbNewLine _
& vbNewLine & "Im folgenden finden Sie eine Übersicht zur Notenverteilung im Kurs, den  _
Notendurchschnitt des Kurses und den Notenschlüssel" _
& vbNewLine & vbNewLine _
& RangetoHTML(rng)
'Nachricht zur Kontrolle anzeigen
.Display
End With
End Sub
Gruß Sebastian

Anzeige
AW: Tabellenbereich neben Text in Email einfügen.
12.06.2016 15:57:10
Hajo_Zi
Hallo Sebastian,
das ist nicht mein Code und Beverly ist erst wieder am Abend Online.

AW: Tabellenbereich neben Text in Email einfügen.
12.06.2016 16:38:34
Beverly
Hi Sebastian,
WAS funktioniert nicht? Eine genaue Fehlerbeschreibung wäre schon angebracht.
Ich habe deinen Code nicht getestet, aber auf jeden Fall darf es nicht
.Body = ....

heißen, sondern es muss stehen:
.HTMLBody = ....

Außerdem gehört kein .Select hinter Set rng = ...


Anzeige
AW: Tabellenbereich neben Text in Email einfügen.
12.06.2016 17:04:27
Sebastian
Hallo Karin,
recht herzlichen Dank, habe nun die beiden Änderungen vorgenommen und der Tabellenabschnitt wird wie gewünscht in die Email eingefügt. Super.
Leider wird der vorangehende Text jetzt nach der Änderung in .HTMLbody nicht mehr wie gewünscht umgebrochen.
Der Befehl vbNewLine wird scheinbar ignoriert. Kann ich das irgendwie ändern?
Hier nochmal der aktuelle Code:
Sub Email_generieren()
'Tabellenbereich einfügen'
Dim rng As Range
Set rng = Range("H6:N18")
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = ActiveCell.Offset(0, 1).Value
.Subject = Range("B1").Value & " " & Range("C1").Value
.HTMLBody = "Guten Morgen " & ActiveCell.Value & "," & vbNewLine _
& vbNewLine & "Anbei ihre Note aus dem Bereich " & Range("C1").Value & "." & vbNewLine _
& "Sie haben " & ActiveCell.Offset(0, 2).Value & " von " & Range("E3").Value & "  _
Gesamtpunkten erreicht. " _
& "Das ergibt die Note " & ActiveCell.Offset(0, 3).Value & "." & vbNewLine _
& vbNewLine & "Im folgenden finden Sie eine Übersicht zur Notenverteilung im Kurs, den  _
Notendurchschnitt des Kurses und den Notenschlüssel" _
& vbNewLine & vbNewLine _
& RangetoHTML(rng)
'Nachricht zur Kontrolle anzeigen
.Display
End With
End Sub
Gruß Sebastian

Anzeige
AW: Tabellenbereich neben Text in Email einfügen.
12.06.2016 17:19:06
Beverly
Hi Sebastian,
in dem Fall musst du vbNewLine durch den HTML-Code für Zeilenumbruch ersetzen
    .HTMLBody = "Guten Morgen " & ActiveCell.Value & "," _
& "Anbei ihre Note aus dem Bereich " & Range("C1").Value & "." _
& "Sie haben " & ActiveCell.Offset(0, 2).Value & " von " & Range("E3").Value _
& "Gesamtpunkten erreicht. " _
& "Das ergibt die Note " & ActiveCell.Offset(0, 3).Value & "." _
& "Im folgenden finden Sie eine Übersicht zur Notenverteilung im Kurs, " _
& "den Notendurchschnitt des Kurses und den Notenschlüssel" _
& RangetoHTML(rng)

Die Leerzeichen vor br müssen jeweils weg - der Code lässt sich leider nicht anders darstellen, da die Forumssoftware die HTML-Zeichen automatisch übersetzt.


Anzeige
AW: Tabellenbereich neben Text in Email einfügen.
12.06.2016 17:31:16
Sebastian
Perfekt,
nochmal ganz herzlichen Dank an dich und auch an Hajo.
Grüße Sebastian
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Tabellenbereich neben Text in E-Mail einfügen


Schritt-für-Schritt-Anleitung

Um eine Excel-Tabelle in den Body einer E-Mail einzufügen, kannst du den folgenden VBA-Code verwenden. Dieser Code generiert eine E-Mail mit einem Tabellenbereich aus Excel. Achte darauf, dass du das richtige Outlook-Objekt verwendest.

Sub Email_generieren()
    Dim rng As Range
    Set rng = Range("H6:N18")
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)

    With objMail
        .To = ActiveCell.Offset(0, 1).Value
        .Subject = Range("B1").Value & " " & Range("C1").Value
        .HTMLBody = "Guten Morgen " & ActiveCell.Value & "," & _
                    "<br><br>Anbei ihre Note aus dem Bereich " & Range("C1").Value & "." & _
                    "<br>Sie haben " & ActiveCell.Offset(0, 2).Value & " von " & Range("E3").Value & " Gesamtpunkten erreicht." & _
                    "<br>Das ergibt die Note " & ActiveCell.Offset(0, 3).Value & "." & _
                    "<br><br>Im folgenden finden Sie eine Übersicht zur Notenverteilung im Kurs, den Notendurchschnitt des Kurses und den Notenschlüssel" & _
                    RangetoHTML(rng)
        .Display
    End With
End Sub

Die Funktion RangetoHTML(rng) ist eine benutzerdefinierte Funktion, die du erstellen musst, um den Excel-Bereich als HTML-Tabelle zu formatieren.


Häufige Fehler und Lösungen

  1. Fehler: Der Text wird nicht korrekt umgebrochen.

    • Lösung: Ersetze vbNewLine durch <br> für HTML-Zeilenumbrüche.
  2. Fehler: Der Code funktioniert nicht.

    • Lösung: Stelle sicher, dass du das richtige Outlook-Objekt verwendest und dass Outlook installiert ist.
  3. Fehler: .Body wird nicht erkannt.

    • Lösung: Verwende .HTMLBody anstelle von .Body, um HTML-Inhalte einzufügen.

Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du auch:

  • Manuell kopieren: Kopiere den gewünschten Bereich in Excel und füge ihn in die E-Mail ein. Beachte, dass dies nicht immer die beste Formatierung liefert.
  • Outlook-Funktionen nutzen: In Outlook kannst du die Funktion „Tabelle einfügen“ verwenden, um deine Daten manuell zu formatieren.

Praktische Beispiele

Hier ist ein Beispiel für die RangetoHTML-Funktion, die du in dein VBA-Projekt integrieren kannst:

Function RangetoHTML(rng As Range)
    Dim fso As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yyyy hh-mm-ss") & ".htm"
    rng.Copy

    Set TempWB = Workbooks.Add(1)
    With TempWB.Worksheets(1)
        .Paste
        .Cells(1).Select
        Application.CutCopyMode = False
        .SaveAs TempFile, xlHTML
        .Close False
    End With

    Set fso = CreateObject("Scripting.FileSystemObject")
    RangetoHTML = fso.OpenTextFile(TempFile).ReadAll
    fso.DeleteFile TempFile
End Function

Tipps für Profis

  • Verwende HTML-Formatierung: Du kannst den E-Mail-Inhalt weiter anpassen, indem du zusätzliche HTML-Formatierungen wie Tabellen, Farben und Schriftarten verwendest.
  • Automatisiere den Prozess: Integriere diesen Code in größere Makros, um automatisierte Berichte zu generieren und zu versenden.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung im VBA-Code, um unerwünschte Programmabbrüche zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Tabelle korrekt formatiert ist? Es ist wichtig, die RangetoHTML-Funktion korrekt zu implementieren, um die Formatierung der Excel-Tabelle zu erhalten.

2. Funktioniert dieser Code in allen Excel-Versionen? Der Code sollte in den meisten modernen Excel-Versionen funktionieren, die mit Outlook kompatibel sind.

3. Kann ich andere Datenquellen verwenden? Ja, du kannst die Datenquelle ändern, solange sie in einem Format vorliegt, das von Excel verarbeitet werden kann.

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