Outlook ist ein sehr verbreitetes Programm, insbesondere auch im beruflichen Bereich, zum Verwalten und Verarbeiten von E-Mails und natürlich noch viel mehr, wenn man nur an den Kalender und der Aufgabenverwaltung denkt.
Ein großer Vorteil von Outlook gegenüber anderen E-Mail Clients ist, dass es VBA (Visual Basic for Applications) mit bringt, wodurch sich viele zusätzliche Aufgaben automatisieren lassen, wenn die passenden Funktionen nicht auch über Outlook-Regeln und integrierte Funktionen bereits erledigt werden können.
E-Mail Anhang mit VBA automatisch speichern
Eine Aufgabe, die einen viele Klicks sparen kann, ist das Speichern von E-Mail Anhängen. Hat man typische wiederkehrenden E-Mails, deren Anhang immer unter denselben Pfad zu speichern ist, so muss man sich jedesmal zu diesem Pfad mit dem “Speichern unter“-Dialog durchklicken.
Mittels VBA kann man sich ein Makro schreiben, um den E-Mail Anhang zu speichern. Dem Makro kann man dann auch noch ein Shortcut zuweisen oder ein Button in der Leiste für den Schnellzugriff einfügen. So benötigt man schließlich nur noch einen Klick oder Tastendruck, um den Anhang der Mail zu speichern. Ein solches Makro lässt sich auch mit weiteren Makros kombinieren, so dass zum Beispiel gleichzeitig der E-Mail-Anhang per VBA gedruckt wird.
VBA-Code zum Speichern Outlook E-Mail Anhang
Mit dem folgenden VBA Code lassen sich die E-Mail Anhänge unter einem fest vorgegebenen Ordnerpfad ablegen. Es werden dabei nur die E-Mail Anhänge der jeweils ausgewählten Mail gespeichert.
In Outlook gelangt man zum Visual Basic Editor durch die Tastenkombination Strg+F11. Es geht auch über das Menü Entwicklertools ⇒ Visual Basic.
Public Sub SaveAttachments()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
' Outlook Application Objekt instanziieren
Set objOL = CreateObject("Outlook.Application")
' Collection der ausgewählten Objekte (E-Mails) ermitteln
Set objSelection = objOL.ActiveExplorer.Selection
' Ordner-Pfad festlegen, wo der E-Mail Anhang gespeichert werden soll
strFolderpath = "c:\Users\AnyUser\Documents\unterordner\rechnungen\jahr_2020\"
' Jedes ausgewählten Objekte (E-Mails) prüfen, ob es einen Anhang hat. Wenn Anhang vorhanden,
' dann unter dem Ordnerpfad speichern.
For Each objMsg In objSelection
' Die Anhänge des ausgewählten Objekts (E-Mail) ermitteln
Set objAttachments = objMsg.Attachments
lngCount = objAttachments.Count
If lngCount > 0 Then
' Wir verwenden hier einen rückwärts gerichteten Zähler; umgekehrt sollte es aber auch funktionieren.
For i = lngCount To 1 Step -1
' Save attachment before deleting from item.
' Dateinamen ermitteln
strFile = objAttachments.Item(i).FileName
' Kombiniere Ablagepfad mit dem Dateinamen
strFile = strFolderpath & strFile
' Anhang als Datei speichern
objAttachments.Item(i).SaveAsFile strFile
Next i
End If
Next
ExitSub:
Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
End Sub
Outlook Makro über Schnellzugriff aufrufen
Aufrufen bzw. Ausführen kann man nun das Makro, vorausgesetzt es ist Public, über die Entwicklertools ⇒ Makro ⇒ Makros-Dialog. Oder man legt sich einen Button in dem Schnellzugriff ab. Über den kleinen Pfeil nach unten im Schnellzugriff wählt man “Weitere Befehle …” aus oder man geht über Datei ⇒ Optionen ⇒ Symbolleiste für den Schnellzugriff.
In dem sich dann öffenenden Dialog-Fenster schränkt man die Befehle auf Makros ein und fügt das betreffende Makro hinzu.
Über den Button “Ändern” kann man dann noch ein Icon vergeben oder den Text anpassen.