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.