Excel Tabellenblätter per E-Mail versenden: So funktioniert's
Schritt-für-Schritt-Anleitung
Um Excel Tabellenblätter per E-Mail zu versenden, benötigst du ein Makro. Hier ist eine Schritt-für-Schritt-Anleitung, um das zu erreichen:
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Klicke auf Einfügen
> Modul
, um ein neues Modul zu erstellen.
-
Kopiere den folgenden VBA-Code in das Modul:
Sub SendMyMail()
Dim ws As Worksheet
Dim objOL As Object
Dim objMail As Object
Set objOL = CreateObject("Outlook.Application")
For Each ws In ThisWorkbook.Worksheets
Set objMail = objOL.CreateItem(0)
ws.UsedRange.Copy
With objMail
.To = ws.Range("D8").Value ' E-Mail-Adresse aus Zelle D8
.Subject = "Betreff"
.GetInspector().WordEditor.Range.Paste
.Display ' Für das sofortige Senden verwende .Send
End With
Set objMail = Nothing
Next ws
Set objOL = Nothing
End Sub
-
Schließe den VBA-Editor und speichere deine Excel-Datei als Makro-aktivierte Datei (*.xlsm
).
-
Füge einen Button in dein Arbeitsblatt ein und verlinke ihn mit dem Makro SendMyMail
.
-
Klicke auf den Button, um alle Tabellenblätter per E-Mail zu versenden.
Häufige Fehler und Lösungen
-
Laufzeitfehler - Sie müssen in die Felder "an", "cc" und "bcc" mindestens einen Namen oder eine Kontaktgruppe eingeben.
- Lösung: Stelle sicher, dass die Zelle D8 tatsächlich eine gültige E-Mail-Adresse enthält. Manchmal kann es sein, dass die E-Mail-Adresse aus einer Formel stammt, die nicht richtig ausgewertet wird.
-
Das Excel wird im Textbereich der E-Mail eingefügt, anstatt als Anhang gesendet zu werden.
- Lösung: Ändere den Code so, dass das Excel-Dokument als Anhang hinzugefügt wird. Siehe den Abschnitt „Praktische Beispiele“.
Alternative Methoden
Eine andere Möglichkeit, eine Excel Tabelle per Mail zu versenden, besteht darin, die Arbeitsblätter zuerst in ein neues Workbook zu kopieren und dann das Workbook als Anhang zu versenden. Hier ist ein Beispiel:
Sub MailVersand()
Dim OL As Object
Dim aWb As Workbook
Dim Ws As Worksheet
Dim An As String
Dim Dpfad As String
Set OL = CreateObject("Outlook.Application")
For Each Ws In ThisWorkbook.Worksheets
Ws.Copy
Set aWb = ActiveWorkbook
Dpfad = "C:\Temp\" & Ws.Name & ".xlsx" ' Ändere den Pfad nach Belieben
aWb.SaveAs Dpfad
An = aWb.Worksheets(1).Range("D8").Value
With OL.CreateItem(0)
.To = An
.Subject = "Betreff"
.Body = "Hier steht ein bestimmter Email-Text..."
.Attachments.Add Dpfad
.Send
End With
aWb.Close False
Kill Dpfad
Next Ws
End Sub
Praktische Beispiele
Wenn du eine Excel Tabelle per Mail versenden möchtest, kannst du den Code so anpassen, dass er nur bestimmte Blätter auswählt. Zum Beispiel:
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Tabelle1" Or ws.Name = "Tabelle2" Then
' Dein Code hier
End If
Next ws
Mit dieser Technik kannst du sicherstellen, dass nur die gewünschten Tabellenblätter versendet werden.
Tipps für Profis
- E-Mail-Versand testen: Bevor du das Makro für alle 60 Tabellenblätter ausführst, teste es mit nur ein oder zwei Blättern, um sicherzustellen, dass alles funktioniert.
- Fehlermeldungen abfangen: Verwende
On Error Resume Next
, um zu verhindern, dass dein Makro bei einem Fehler stoppt. Vergiss jedoch nicht, die Fehlerbehandlung später zurückzusetzen.
- Automatisierung: Du kannst das Makro so einstellen, dass es automatisch zu bestimmten Zeiten ausgeführt wird, indem du es mit Aufgabenplanung kombinierst.
FAQ: Häufige Fragen
1. Wie kann ich die E-Mail-Adressen aus einer anderen Zelle beziehen?
Du kannst die Zeile .To = ws.Range("D8").Value
anpassen, um die E-Mail-Adresse aus einer anderen Zelle zu verwenden.
2. Funktioniert das Makro auch auf einem Mac?
Ja, du kannst das Makro auch auf einem Mac verwenden, allerdings kann die Outlook-Integration je nach Version des Betriebssystems variieren. Stelle sicher, dass du die richtige VBA-Syntax verwendest.
3. Was tun, wenn der Reiter für Serienmails in Excel fehlt?
Überprüfe deine Excel-Version und stelle sicher, dass die Funktion für Serienmails in deinem Excel aktiviert ist. Gehe zu den Excel-Optionen und aktiviere die entsprechenden Add-Ins.