Excel Datei per Mail versenden mit Makro
Schritt-für-Schritt-Anleitung
- Makro öffnen: Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Neues Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
- Code einfügen: Füge den folgenden Code in das Modul ein:
#If Win64 Then
Private Declare PtrSafe Function apiCreateFullPath Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
#Else
Private Declare Function apiCreateFullPath Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
#End If
Sub Save_And_Mail()
Dim sPath As String, DateiName As String
Dim MyOutApp As Object, MyMessage As Object
sPath = Tabelle1.Range("A12").Value
If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
If Left$(sPath, 1) <> "\" Then sPath = "\" & sPath
sPath = "D:\Daten\Excel" & sPath
If apiCreateFullPath(sPath) <> 1 Then
MsgBox sPath & vbCr & vbCr & "Ordner konnte nicht erstellt werden!"
Exit Sub
End If
With ThisWorkbook
DateiName = "BW CZ" & Mid(.Name, InStrRev(.Name, "."), Len(.Name))
sPath = sPath & DateiName
End With
If Dir(sPath, vbNormal) <> "" Then
If MsgBox(DateiName & vbCr & "Datei bereits vorhanden!" & vbCr & "Soll diese ersetzt werden?", vbQuestion + vbYesNo) = vbYes Then
Kill sPath: DoEvents
ThisWorkbook.SaveCopyAs sPath
Else
Exit Sub
End If
Else
ThisWorkbook.SaveCopyAs sPath
End If
If Dir(sPath, vbNormal) = "" Then
MsgBox DateiName & vbCr & vbCr & "Datei konnte nicht erstellt werden!"
Exit Sub
End If
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "Hier kommt die Adresse rein"
.Subject = "hier der Betreff"
.body = "Mein Text"
.Attachments.Add sPath
.Display
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub
- Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke
ALT + F8
, wähle „Save_And_Mail“ und klicke auf „Ausführen“.
Häufige Fehler und Lösungen
- Fehler: Ordner kann nicht erstellt werden: Stelle sicher, dass der Pfad in Zelle A12 korrekt ist und die Berechtigungen für den Ordner vorhanden sind.
- Fehler: Datei bereits vorhanden: Wenn die Datei bereits existiert, wird eine Abfrage angezeigt. Du kannst die Datei entweder ersetzen oder das Makro abbrechen.
- Fehler bei 64-Bit Version: Achte darauf, die
PtrSafe
-Deklaration im Code zu verwenden, wenn Du Excel 64-Bit nutzt.
Alternative Methoden
- Excel Tabelle automatisch per Mail versenden: Du kannst den „Senden als Anhang“ Befehl in Excel verwenden, um die Datei direkt per E-Mail zu versenden.
- Verwendung von Excel VBA: Mit VBA kannst Du komplexere Automatisierungen erstellen, wie das Versenden von mehreren Dateien in einer E-Mail.
Praktische Beispiele
- Beispiel für das Versenden einer Excel Datei: Ändere die Zeile
.To = "Hier kommt die Adresse rein"
im Code, um die gewünschte E-Mail-Adresse einzufügen.
- PDF speichern und versenden: Ersetze
ThisWorkbook.SaveCopyAs sPath
mit ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath
, um die Datei als PDF zu speichern.
Tipps für Profis
- Nutze Fehlerbehandlung im VBA-Code, um sicherzustellen, dass das Makro auch bei unerwarteten Fehlern stabil bleibt.
- Teste den Code in einer Entwicklungsumgebung, bevor Du ihn produktiv nutzt, um sicherzustellen, dass alles wie gewünscht funktioniert.
- Makro-Buttons: Erstelle einen Button in Excel, um das Makro mit einem Klick auszuführen. Gehe zu „Entwicklertools“ > „Einfügen“ > „Button“ und weise das Makro zu.
FAQ: Häufige Fragen
1. Wie kann ich das Makro anpassen, um eine andere Datei zu versenden?
Du kannst den DateiName
im Code anpassen, um einen anderen Dateinamen zu verwenden.
2. Was passiert, wenn ich keine E-Mail-Adresse angebe?
Wenn Du die Zeile .To = ""
weglässt oder leer lässt, wird die E-Mail ohne Empfänger erstellt, was nicht empfohlen wird.
3. Wie kann ich die E-Mail als Entwurf speichern?
Verwende .Save
anstelle von .Display
, um die E-Mail als Entwurf zu speichern.
4. Funktioniert dieses Makro in Excel für Mac?
Das Makro ist für Windows erstellt. Die Funktionalität kann bei der Mac-Version von Excel variieren.