Excel-Datei per Mail versenden mit geänderten Dateinamen
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei per Mail zu versenden und gleichzeitig den Dateinamen zu ändern, kannst du das folgende VBA-Skript verwenden:
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbookName)", dann „Einfügen“ > „Modul“.
- Kopiere und füge den folgenden Code ein:
Sub Excel_Workbook_via_Outlook_Senden()
Dim MyMessage As Object, MyOutApp As Object
Dim AWS As String
Dim UserName As String
' Den Namen des Users aus Zelle A13 holen
UserName = ThisWorkbook.Sheets(1).Range("A13").Value
' Aktive Arbeitsmappe wird als Mail gesendet
AWS = ThisWorkbook.Path & "\Spesenabrechnung_" & UserName & "_" & Format(Now, "DDMMYYYYhhmmss") & ".xls"
' Kopie des Workbooks speichern
ThisWorkbook.SaveCopyAs AWS
' Outlook Objekt erstellen
Set MyOutApp = CreateObject("Outlook.Application")
' Outlook Nachricht erstellen
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "irgendwer@provider"
.Subject = "Spesenabrechnung " & Date & " " & Time
.Attachments.Add AWS
.Body = "Mail für normalen Textempfang"
.Send ' Direkt senden, ohne die Nachricht vorher anzuzeigen
End With
' Temporäre Datei löschen
Kill AWS
' Variablen leeren
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro aus, um die Excel-Datei per Mail zu versenden.
Häufige Fehler und Lösungen
-
Problem: Der Dateiname wird nicht wie gewünscht geändert.
- Lösung: Stelle sicher, dass die Zelle A13 den korrekten Usernamen enthält. Der Code verwendet
Range("A13").Value, um den Namen zu lesen.
-
Problem: Outlook zeigt eine Sicherheitswarnung an.
- Lösung: Um diese Warnung zu umgehen, kannst du den Code so anpassen, dass er das CDO (Collaboration Data Objects) verwendet. Informationen dazu findest du hier.
-
Problem: Die temporäre Datei wird nicht gelöscht.
- Lösung: Stelle sicher, dass der Pfad korrekt ist und die Datei nicht geöffnet ist, wenn du
Kill AWS ausführst.
Alternative Methoden
Eine Möglichkeit, eine Excel-Datei per Mail zu versenden, ohne Outlook zu verwenden, ist die Verwendung von SMTP-Protokollen oder CDO. Diese Methode erfordert jedoch zusätzliche Einstellungen und Kenntnisse über Serverinformationen.
Praktische Beispiele
-
E-Mail mit angehängtem Bericht: Verwende das oben gegebene Skript und passe den Betreff und den Body der Nachricht an, um spezifische Informationen über den Bericht bereitzustellen.
-
Versenden an mehrere Empfänger: Erweitere das .To-Feld, indem du mehrere E-Mail-Adressen durch Semikolons trennst:
.To = "adresse1@provider; adresse2@provider"
Tipps für Profis
- Verwende
Environ("Temp"), um temporäre Dateien im Temp-Ordner des Systems zu speichern.
- Teste dein Skript in einer sicheren Umgebung, bevor du es in einer Produktionsumgebung verwendest, um sicherzustellen, dass alles wie gewünscht funktioniert.
FAQ: Häufige Fragen
1. Wie kann ich den Pfad für die Datei angeben?
Ersetze ThisWorkbook.Path im Skript durch den gewünschten Pfad, z. B. C:\DeinPfad\.
2. Wie kann ich das Makro automatisch ausführen?
Du kannst das Makro an ein Ereignis binden, wie z. B. das Öffnen der Datei oder das Klicken auf einen Button in der Excel-Oberfläche.
3. Kann ich das Skript in anderen Excel-Versionen verwenden?
Ja, das Skript sollte in den meisten modernen Excel-Versionen funktionieren, solange VBA unterstützt wird.