Mail-Anhänge mit VBA: So fügst du ActiveSheet hinzu
Schritt-für-Schritt-Anleitung
Um ein bestimmtes Tabellenblatt als Anhang in einer E-Mail zu versenden, kannst du folgenden VBA-Code verwenden. Dieser Code kopiert das aktive Blatt in eine neue Arbeitsmappe, speichert es und fügt es als Anhang hinzu.
Sub MailVersenden()
Dim outl, Mail As Object
Dim i As Integer
Dim Nachricht
For i = 6 To 6 ' Zeile 6
If Cells(i, 2) = "" Then GoTo ende
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = Cells(i, 2) & " " & Cells(8, 4) & Cells(12, 1) & " / " & Cells(14, 1) ' Betreffzeile
Mail.To = Cells(i, 2) ' Adresse
' Aktives Blatt in neues Workbook kopieren
ThisWorkbook.ActiveSheet.Copy
' Speichern unter dem Originalpfad
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\temp.xls"
' Anhang hinzufügen
Mail.Attachments.Add ActiveWorkbook.FullName
Mail.Display
' Optional: Senden der E-Mail
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate Mail
Application.Wait (Now + TimeValue("0:00:02"))
WshShell.SendKeys ("%s")
' Aufräumen
Set Mail = Nothing
Set outl = Nothing
Set WshShell = Nothing
Application.Wait (Now + TimeValue("0:00:03"))
' Temp-Datei schließen und löschen
Workbooks("temp.xls").Close SaveChanges:=False
Kill ThisWorkbook.Path & "\temp.xls"
ende:
Next i
End Sub
Häufige Fehler und Lösungen
-
Fehlermeldung bei Mail.Attachments.Add ActiveSheet
Das liegt daran, dass du nicht das aktive Blatt direkt anhängen kannst. Verwende stattdessen den obigen Code, um das Blatt in eine temporäre Datei zu kopieren und diese als Anhang hinzuzufügen.
-
Datei kann nicht gespeichert werden
Stelle sicher, dass der angegebene Pfad, in dem du die Datei speichern möchtest, existiert. Verwende ThisWorkbook.Path
, um die Datei im gleichen Verzeichnis wie die Originaldatei zu speichern.
Alternative Methoden
Eine alternative Methode, um Anhänge in eine E-Mail zu verschicken, besteht darin, ein Add-In von Ron de Bruin zu verwenden. Diese Tools bieten häufig eine benutzerfreundliche Oberfläche für den E-Mail-Versand und die Anhänge.
Praktische Beispiele
Hier sind einige praktische Anwendungsfälle für den obigen VBA-Code:
- Versand von Berichten: Nutze den Code, um regelmäßig Berichte an dein Team zu senden.
- Automatisierte Benachrichtigungen: Integriere den Code in ein Makro, das automatisch E-Mails basierend auf bestimmten Bedingungen versendet.
Tipps für Profis
- E-Mail-Vorlagen verwenden: Du kannst E-Mail-Vorlagen erstellen, um den Versand zu automatisieren und konsistent zu gestalten.
- Fehlerbehandlung einfügen: Verwende
On Error Resume Next
, um Fehler zu handhaben und unerwartete Abstürze zu vermeiden.
- Schnelle Anpassungen: Wenn du oft das aktive Blatt versendest, denke daran, den Code zu parametrisieren, um das Zielblatt dynamisch auszuwählen.
FAQ: Häufige Fragen
1. Ist dieser Code mit jeder Excel-Version kompatibel?
Ja, der Code sollte in den meisten modernen Excel-Versionen (ab 2007) funktionieren, die VBA unterstützen.
2. Kann ich mehrere Blätter gleichzeitig versenden?
Ja, du kannst eine Schleife über die Blätter in deiner Arbeitsmappe einfügen und jedes Blatt nacheinander an die E-Mail anhängen.
3. Wie kann ich den E-Mail-Versand automatisieren?
Du kannst den Code in ein zeitgesteuertes Makro einfügen oder eine Schaltfläche in deiner Excel-Oberfläche erstellen, um das Senden der E-Mail zu triggern.