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

Tabellenbereich als email verschicken

Forumthread: Tabellenbereich als email verschicken

Tabellenbereich als email verschicken
18.03.2020 11:51:26
Alex
Hallo,
evtl. kann mir hier ein VBA Experte weiterhelfen und zwar möchte ich einen Bereich einer Tabelle per Button als email verschicken. Lässt sich sowas bewerkstelligen ?
Der Bereich befindet sich im Tabellenblatt 2 von A3:H95
Danke im voruas für die Hilfe
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenbereich als email verschicken
18.03.2020 12:10:04
volti
Hallo Alex,
mit diesem zunächst einfachen Ansatz kannst Du einen Bereich verschicken.
Natürlich können die Parameter wie z.B. Adressat, Betreff usw. auch aus Zellenbereichen übernommen werden. Ordne die Sub einfach einem Button zu....

Option Explicit
Private Sub Mail_Senden_Formatierung_Bereich()
'Sendet eine formatierte Mail mit Signatur
 Dim sMailText As String
 
 With CreateObject("Outlook.Application").CreateItem(0)
  .BodyFormat = 3          'HTML-Format, Angabe optional
  .To = "AnMich@web.de"
'  .CC = ""
'  .Bcc = ""
  .Subject = "Mein Betreff"
  sMailText = "Hallo, hier ein Tabellenausschnitt"
  .GetInspector
  .htmlbody = Replace(sMailText, vbLf, "<br>") _
   & Range2Html(ThisWorkbook.Sheets("Tabelle2").Range("A3:H95")) & .htmlbody
  .display
 End With
End Sub
Private Function Range2Html(oBereich As Range) As String
'Gibt den angegebenen Bereich als HTML zurück, incl.Bilder
 Dim sTmpDatei As String, sTmp As String, sTmpVz As String
 Dim iff As Integer, P As Long
'Bereich in Datei exportieren
 With oBereich
  sTmpVz = Environ$("temp") & "\"
  sTmpDatei = sTmpVz & Format(Now, "ddmmyy" & Int(Timer) * 10) & ".htm"
  .Parent.Parent.PublishObjects.Add( _
  SourceType:=xlSourceRange, _
  Filename:=sTmpDatei, Sheet:=.Parent.Name, _
  Source:=.Address, _
  HtmlType:=xlHtmlStatic).Publish Create:=True
  iff = FreeFile
  Open sTmpDatei For Input As iff
  Range2Html = Replace(Input(LOF(iff), iff), "align=center x:publishsource=", _
             "align=left x:publishsource=")
  Close iff
'Feststellen, ob auch Bilder im Bereich sind
  P = InStr(1, Range2Html, "<link rel=File-List href=") + 26
  If P > 26 Then
    sTmp = Mid$(Range2Html, P, InStr(P, Range2Html, "/filelist.xml") - P)
    Range2Html = Replace(Range2Html, sTmp, sTmpVz & sTmp)
  End If
 End With
 On Error Resume Next
 Kill sTmpDatei
 Kill sTmpVz & sTmp
End Function

viele Grüße
Karl-Heinz

Anzeige
AW: Tabellenbereich als email verschicken
18.03.2020 12:59:58
Alex
Hallo Danke, werde ich gleich einmal ausprobieren.
AW: Tabellenbereich als email verschicken
19.03.2020 09:36:36
Alex
Hallo, kann ich dazu auch noch im Betreff das aktuelle Datum generieren lassen ?
sMailText = "Hallo, hier ein Tabellenausschnitt"
AW: Tabellenbereich als email verschicken
19.03.2020 10:21:02
peterk
Hallo

.Subject = "Mein Betreff " &  format(date,"dd.mmmm.yyyy") ' Mein Betreff 19.März.2020
oder
.Subject = "Mein Betreff " &  format(date,"dd.mm.yyyy") ' Mein Betreff 19.03.2020

Anzeige
AW: Tabellenbereich als email verschicken
19.03.2020 13:49:00
Alex
Hat super geklappt Danke,
ein Problem habe ich noch ich bekomme es nicht in das ich mehrere email Adressen anlegen kann bei
.to = "test.mail@test.com"
AW: Tabellenbereich als email verschicken
19.03.2020 14:21:08
volti
Hallo Alex,
einfach Semikolon-Getrennt beliebig viele eMail-Adressen eingeben...
.to = "test.mail@test.com;Er@web.de;Du@gmx.de"
viele Grüße
Karl-Heinz
Anzeige
AW: Tabellenbereich als email verschicken
19.03.2020 16:17:05
Alex
Danke Karl Heinz
AW: Tabellenbereich als email verschicken
19.03.2020 11:07:01
volti
Hi ALex,
hat peterK ja schon treffend beantwortet.
Gruß KH
;

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

Infobox / Tutorial

Tabellenbereich per E-Mail versenden


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul.

  3. Füge den folgenden Code in das Modul ein:

    Option Explicit
    
    Private Sub Mail_Senden_Formatierung_Bereich()
       Dim sMailText As String
    
       With CreateObject("Outlook.Application").CreateItem(0)
           .BodyFormat = 3 ' HTML-Format, Angabe optional
           .To = "AnMich@web.de"
           .Subject = "Mein Betreff"
           sMailText = "Hallo, hier ein Tabellenausschnitt"
           .GetInspector
           .htmlbody = Replace(sMailText, vbLf, "<br>") _
           & Range2Html(ThisWorkbook.Sheets("Tabelle2").Range("A3:H95")) & .htmlbody
           .display
       End With
    End Sub
    
    Private Function Range2Html(oBereich As Range) As String
       ' Gibt den angegebenen Bereich als HTML zurück, incl. Bilder
       Dim sTmpDatei As String, sTmpVz As String
       Dim iff As Integer
    
       With oBereich
           sTmpVz = Environ$("temp") & "\"
           sTmpDatei = sTmpVz & Format(Now, "ddmmyy") & Int(Timer) * 10 & ".htm"
           .Parent.Parent.PublishObjects.Add( _
           SourceType:=xlSourceRange, _
           Filename:=sTmpDatei, Sheet:=.Parent.Name, _
           Source:=.Address, _
           HtmlType:=xlHtmlStatic).Publish Create:=True
           iff = FreeFile
           Open sTmpDatei For Input As iff
           Range2Html = Replace(Input(LOF(iff), iff), "align=center x:publishsource=", _
           "align=left x:publishsource=")
           Close iff
       End With
       Kill sTmpDatei
    End Function
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Weise die Sub Mail_Senden_Formatierung_Bereich einem Button zu, um die E-Mail zu senden.


Häufige Fehler und Lösungen

  • Problem: E-Mail wird nicht gesendet.

    • Lösung: Stelle sicher, dass Outlook als Standard-E-Mail-Client eingestellt ist.
  • Problem: Der Bereich wird nicht korrekt angezeigt.

    • Lösung: Überprüfe, ob der Range richtig angegeben ist (A3:H95).
  • Problem: Fehler beim Erstellen der HTML-E-Mail.

    • Lösung: Stelle sicher, dass der Code in einem Modul und nicht in einem Arbeitsblatt platziert ist.

Alternative Methoden

  • Du kannst auch die Funktion SendMail in Excel verwenden, um eine E-Mail zu senden. Diese erfordert jedoch keine VBA-Programmierung und ist einfacher, bietet aber weniger Anpassungsmöglichkeiten.

  • Eine andere Möglichkeit ist die Verwendung von Power Automate, um automatisierte E-Mails zu versenden, wenn Änderungen in einer Excel-Datei stattfinden.


Praktische Beispiele

  1. E-Mail an mehrere Empfänger senden:

    .To = "test.mail@test.com;Er@web.de;Du@gmx.de"
  2. Aktuelles Datum im Betreff hinzufügen:

    .Subject = "Mein Betreff " & Format(Date, "dd.mm.yyyy")

Mit diesen Beispielen kannst du flexibel arbeiten und deine Excel Tabelle in Mail einfügen.


Tipps für Profis

  • Nutze die Möglichkeit, Variablen für Adressat, Betreff und Nachrichtentext zu verwenden, um den Code dynamisch zu gestalten.
  • Experimentiere mit weiteren HTML-Formatierungen, um die E-Mail ansprechender zu gestalten.
  • Denke daran, regelmäßig Backups deines VBA-Codes zu machen, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich den Code anpassen, um Bilder in die E-Mail einzufügen?
Ja, die Funktion Range2Html unterstützt das Einfügen von Bildern. Achte darauf, dass die Bilder im angegebenen Bereich vorhanden sind.

2. Wie kann ich die E-Mail direkt senden, ohne sie zuerst anzuzeigen?
Ersetze .display durch .send, um die E-Mail direkt zu versenden.

3. Funktioniert das auch in Excel für Mac?
Der VBA-Code ist für Windows-Versionen von Excel optimiert. In Excel für Mac können einige Funktionen nicht unterstützt werden, daher solltest du das zuerst testen.

4. Was ist der Unterschied zwischen .CC und .BCC?
.CC steht für "Carbon Copy" und sendet eine Kopie an die angegebenen Adressen, während .BCC für "Blind Carbon Copy" steht, was bedeutet, dass die Empfänger die anderen Adressen nicht sehen können.

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