Bereich einer Excel-Tabelle per Email versenden
Schritt-für-Schritt-Anleitung
Um einen Bereich einer Excel-Tabelle per Email zu versenden, kannst Du folgendes VBA-Makro verwenden. Dieses Beispiel versendet den Bereich Tabelle2!A1:B25
im Body einer Outlook-Email.
- Öffne Excel und drücke
ALT + F11
, um den Visual Basic for Applications (VBA) Editor zu öffnen.
- Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- Füge folgenden Code in das Modul ein:
Sub Mail()
Dim objOutlook As Object
Dim objEmail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objEmail = objOutlook.CreateItem(0)
' Bereich definieren
Dim rng As Range
Set rng = Tabelle2.Range("A1:B25") ' Bereich anpassen!
' Email erstellen
With objEmail
.To = "test1@email.de;test2@email.de"
.Subject = "KW: " & Range("Tabelle3!B25").Value & "/" & Range("Tabelle3!D25").Value
.HTMLBody = RangetoHTML(rng) ' Bereich als HTML einfügen
.Display ' Zum Anzeigen der Email
' .Send ' Um die Email automatisch zu senden
End With
' Objekte freigeben
Set objEmail = Nothing
Set objOutlook = Nothing
End Sub
Function RangetoHTML(rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
Application.CutCopyMode = False
End With
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.readall
ts.Close
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
- Passe den Bereich
Tabelle2!A1:B25
nach Bedarf an.
- Führe das Makro aus, um die Email zu versenden.
Häufige Fehler und Lösungen
-
Fehler: Benutzerdefinierter Typ nicht definiert
Stelle sicher, dass die Microsoft Forms 2.0 Object Library
aktiviert ist. Gehe zu Tools
> References
im VBA-Editor und aktiviere die entsprechende Bibliothek.
-
Kein Outlook installiert
Dieses Makro funktioniert nur, wenn Outlook auf Deinem Computer installiert ist. Andernfalls wird die Email nicht gesendet.
Alternative Methoden
Wenn Du kein VBA verwenden möchtest, kannst Du die Daten auch manuell kopieren und in eine neue Email in Outlook einfügen. Eine weitere Möglichkeit ist, die Excel-Datei als Anhang zu versenden. Hierfür kannst Du einfach die Datei
> Teilen
> E-Mail
Funktion in Excel nutzen.
Praktische Beispiele
Hier sind einige praktische Beispiele, um einen Excel-Bereich per Email zu versenden:
-
Versenden einer Excel-Tabelle als Email:
Verwende den oben bereitgestellten Code und passe den Bereich an, den Du senden möchtest.
-
Versenden einer Excel-Datei als Anhang:
Du kannst die gesamte Datei mit folgendem VBA-Code versenden:
Sub SendWorkbook()
Dim objOutlook As Object
Dim objEmail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objEmail = objOutlook.CreateItem(0)
With objEmail
.To = "test@example.com"
.Subject = "Excel Datei"
.Body = "Hier ist die angeforderte Excel-Datei."
.Attachments.Add "C:\Pfad\zu\deiner\Datei.xlsx" ' Pfad anpassen
.Send
End With
Set objEmail = Nothing
Set objOutlook = Nothing
End Sub
Tipps für Profis
- HTML-Formatierung: Um sicherzustellen, dass die Email gut aussieht, verwende
.HTMLBody
anstelle von .Body
.
- Fehlerbehandlung: Implementiere eine Fehlerbehandlung im Code, um unerwartete Probleme beim Senden der Email abzufangen.
- Automatisierung: Plane das Makro mit Windows Task Scheduler, um regelmäßig Berichte zu senden.
FAQ: Häufige Fragen
1. Wie kann ich eine Excel-Tabelle per Mail versenden?
Du kannst das oben bereitgestellte Makro verwenden, um den gewünschten Bereich zu versenden.
2. Welche Version von Excel benötige ich?
Der bereitgestellte Code funktioniert in Excel-Versionen 2000 bis 2016 und sollte auch in Excel 365 funktionieren.
3. Wie kann ich den Versandschritt automatisieren?
Du kannst den .Send
Befehl im Makro aktivieren, um die Email ohne vorherige Anzeige direkt zu versenden.