Excel: Makro zum Versenden von XLSM als XLSX per E-Mail
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei im Format XLSM per E-Mail zu versenden und gleichzeitig eine Kopie im Format XLSX zu erstellen, folge diesen Schritten:
- Öffne Excel und erstelle ein neues Makro oder öffne dein bestehendes Makro.
- Verwende den folgenden Code in deinem VBA-Editor:
Sub MappeViaOutlookSenden()
Const AN$ = "max.mustermann@gmx.at"
Const BETREFF$ = "Testdatei"
Const TEXT$ = "Im Anhang die aktuellen Untersuchungsergebnisse."
Const TYP$ = ".xlsx"
Const SEP$ = "_"
Dim WbQ As Workbook: Set WbQ = ThisWorkbook
Dim Ol As Object, Eml As Object
Dim Suf$, Pfad$, Anhang$
Pfad = WbQ.Path & "\"
Suf = Application.InputBox("Dateinamen-Zusatz eingeben:", "Dateiname Email-Anhang ", , , , , , 2 + 4)
Select Case Suf
Case Is = vbNullString: Exit Sub
Case Is = False: Exit Sub
End Select
Anhang = Pfad & Left(WbQ.Name, InStr(1, WbQ.Name, ".") - 1) & SEP & Suf & TYP
WbQ.Save
kopie_speichern Anhang
Set Ol = CreateObject("Outlook.Application")
Set Eml = Ol.CreateItem(0)
With Eml
.To = AN
.Subject = BETREFF & " " & Date
.Attachments.Add Anhang
.Body = TEXT & vbLf & vbLf
.Display
End With
Set Ol = Nothing
Set Eml = Nothing
End Sub
Sub kopie_speichern(Pfad As String)
Dim objFileDialog As FileDialog
Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With objFileDialog
.FilterIndex = 1 '1 = .xlsx
.InitialFileName = Pfad
If .Show Then Call .Execute
End With
Application.DisplayAlerts = True
End Sub
- Passe die Konstanten im Code an, um die E-Mail-Adresse, den Betreff und den gewünschten Text zu ändern.
- Führe das Makro aus, um die Datei als XLSX zu speichern und per E-Mail zu versenden.
Häufige Fehler und Lösungen
- Fehler beim Speichern der Datei: Stelle sicher, dass der Pfad zur Datei korrekt ist. Vergewissere dich, dass die Datei nicht bereits geöffnet ist.
- E-Mail wird nicht gesendet: Überprüfe die E-Mail-Adresse und stelle sicher, dass Outlook korrekt konfiguriert ist.
- Dateiformat nicht kompatibel: Vergewissere dich, dass du den richtigen
FileFormat verwendest. Für XLSX lautet dieser xlOpenXMLWorkbook.
Alternative Methoden
Falls du kein Makro verwenden möchtest, kannst du die Datei manuell speichern und per E-Mail versenden:
- Speichere die Datei als XLSX über "Datei" > "Speichern unter".
- Öffne dein E-Mail-Programm und füge die gespeicherte Datei als Anhang hinzu.
Praktische Beispiele
Wenn du nur ein einzelnes Tabellenblatt versenden möchtest, kannst du den Code wie folgt anpassen:
Dim ws As Worksheet
Set ws = WbQ.Sheets("Tabellenblattname") ' Ersetze "Tabellenblattname" durch den Namen des gewünschten Blatts
ws.Copy
ActiveWorkbook.SaveAs Filename:=Anhang, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close False
Tipps für Profis
- E-Mail-Anhang mit Passwort schützen: Du kannst den E-Mail-Anhang mit einem Passwort schützen, indem du die Datei vor dem Versenden verschlüsselst.
- Automatisierung: Überlege, das Makro zu automatisieren, indem du es zu einem bestimmten Zeitpunkt täglich ausführst.
FAQ: Häufige Fragen
1. Kann ich das Makro so anpassen, dass es automatisch täglich versendet wird?
Ja, du kannst das Makro mit dem Windows Task Scheduler oder einer externen Software planen.
2. Wie kann ich sicherstellen, dass die Datei als XLSX und nicht als XLSM gespeichert wird?
Verwende die Methode SaveAs und setze den FileFormat auf xlOpenXMLWorkbook.
3. Ist es möglich, nur ein einzelnes Tabellenblatt per E-Mail zu versenden?
Ja, das ist möglich, indem du das gewünschte Tabellenblatt kopierst und dann speicherst, wie im obigen Beispiel gezeigt.