Tabellenbereich per E-Mail versenden
Schritt-für-Schritt-Anleitung
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Klicke auf Einfügen
und wähle Modul
.
-
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
-
Schließe den VBA-Editor und gehe zurück zu Excel.
-
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
-
E-Mail an mehrere Empfänger senden:
.To = "test.mail@test.com;Er@web.de;Du@gmx.de"
-
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.