Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Das Speichern von Anhängen in E-Mails gelingt in Outlook recht einfach: Man öffnet die E-Mail, klickt mit der rechten Maustaste auf den Anhang und wählt aus dem Kontextmenü den Eintrag “Speichern unter” aus. Danach allerdings fragt Outlook den Speicherort für den Anhang ab und hier startet man immer im gleichen Verzeichnis – in der Regel das Dokumente-Verzeichnis des aktuellen Benutzers. Dieser Artikel zeigt, wie wir dieses Verzeichnis auf ein anderes Verzeichnis einstellen können, aber das reicht in vielen Fällen nicht aus: Rechnungen sollen in ein bestimmtes Verzeichnis gespeichert werden, Anfragen von Kunden in einem bestimmten Verzeichnis für den jeweiligen Kunden et cetera. Diese Aufgaben werden wir mit einem Tool vereinfachen, das gleich im Kontextmenü die Möglichkeit zum Speichern in verschiedenen Verzeichnissen bietet. Und noch mehr: Wir wollen das Tool so programmieren, dass der Benutzer selbst eintragen kann, welche Kontextmenü-Einträge zum Speichern in verschiedenen Verzeichnissen genutzt werden können.
Ausgangssituation: Viel Arbeit mit dem Dateidialog
Standardmäßig bietet Outlook zwei Aufrufmöglichkeiten zum Speichern von Anhängen an:
- beim Rechtsklick auf einen der Anhänge in der Mail (siehe Bild 1) oder
- beim Markieren des Anhangs im Ribbon (siehe Bild 2).
Bild 1: Kontextmenü-Einträge zum Speichern von Anhängen
Bild 2: Ribbon-Einträge zum Speichern von Anhängen
Beim Anklicken dieser Einträge erscheint ein Anlage speichern-Dialog zur Auswahl des Speicherortes, der standardmäßig das Dokumente-Verzeichnis des aktuellen Benutzers anzeigt. Für viele Anwendungen wäre es schon ein Gewinn, wenn sich dieser Dialog das zuletzt verwendete Verzeichnis merken würde, aber das ist nicht der Fall. Für eine einfache Lösung schauen wir uns daher im ersten Schritt an, wie man dieses Verzeichnis dauerhaft umstellen kann.
Zielverzeichnis per Registry einstellen
Dazu öffnen wir die Registry von Windows (in der Window-Suche RegEdit eingeben) und navigieren dort zu dem folgenden Eintrag:
Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Options
Hier legen wir einen neuen Eintrag mit dem Typ Zeichenfolge und dem Namen DefaultPath an und tragen für diesen das gewünschte Verzeichnis ein (siehe Bild 3).
Bild 3: Neues Standardverzeichnis zum Speichern von Attachments
Nach dem nächsten Neustart bietet Outlook beim Speichern von Attachments den dort hinterlegten Ordner an.
Attachments komfortabel speichern per COM-Add-In
In einem weiteren Artikel namens Kontextmenüs in Outlook anpassen (www.vbentwickler.de/369) haben wir bereits beschrieben, wie wir die Kontextmenüs von Outlook anpassen können.
Ein weiterer Artikel mit dem Titel Outlook: Ribbon per COM-Add-In anpassen (www.vbentwickler.de/376) zeigt, wie wir das Ribbon nach unseren Bedürfnissen gestalten können.
Die dort vorgestellten Techniken verwenden wir als Grundlage für die nachfolgend vorgestellte Lösung. Im ersten genannten Beitrag haben wir bereits herausgefunden, dass es in der Attachments-Auflistung für Outlook-E-Mails nicht nur die Attachments gibt, die offensichtlich als Datei an die E-Mail angehängt wurden, sondern auch solche Dateien berücksichtigt werden, die in die E-Mail eingebettet wurden – beispielsweise als Bilder. Die dort vorgestellten Funktionen HasAttachedFiles und IsFileAttached verwenden wir auch in diesem Artikel.
Wie wollen wir die Funktionen zum Speichern von Attachments genau gestalten? Das hängt von den Anforderungen ab. Für den einen reicht es, wenn wir einen eigenen Menüpunkt zum Speichern von Rechnungen in einem speziellen Verzeichnis hinzufügen, damit diese von der Buchhaltung weiterverarbeitet werden können.
Der andere hat fünf feste Kunden, für die er immer wieder neue Anwendungen oder Erweiterungen programmiert und hat für jeden dieser Kunden ein Verzeichnis, in dem die von den Kunden geschickten Dokumente mit Anforderungen oder anderen Informationen gespeichert werden können.
Beide Anforderungen könnte man fest in ein COM-Add-In programmieren. Früher oder später wird sich jedoch irgendein Parameter ändern – beispielsweise, weil man den Rechner neu aufsetzt und sich dadurch die Verzeichnisstruktur ändert oder weil ein fester Kunde wegfällt und ein anderer hinzukommt.
Wir sind also gut beraten, wenn wir die zu programmierende Funktion so weit wie möglich flexibel gestalten. Wie können wir das machen? Eine Idee wäre, eine Text- oder XML-Datei zu diesem Zweck zu hinterlegen, welche die benötigten Informationen enthält. Welche Informationen werden das genau sein?
- Kontextmenü-Einträge
- Verzeichnisse, in welche die Attachments beim Betätigen der Kontextmenü-Einträge gespeichert werden
Grundsätzlich wollen wir die Idee aufgreifen, wie im Artikel Kontextmenüs in Outlook anpassen (www.vbentwickler.de/369) ein dynamicMenu-Element zum Kontextmenü hinzuzufügen. Dieses können wir ebenfalls an der entsprechenden Stelle zum Ribbon hinzufügen.
Der Clou dabei wäre, dass wir dann direkt das menu-Element mit den Untermenüpunkten in eine Textdatei schreiben könnten, die beim Aufrufen des dynamischen Untermenüs eingelesen und verarbeitet wird. Und die Verzeichnisse schreiben wir einfach in das tab-Attribut der jeweiligen Elemente. Damit haben wir schon einmal diesen Teil abgedeckt.
Verschiedene Kontextmenüs
Die üblichen Befehle zum Speichern der Attachments einer E-Mail befinden sich im Kontextmenü des mit der rechten Maustaste angeklickten Attachments.
Hier finden wir zwei Einträge, die sich wie folgt verhalten
- Speichern unter: Zeigt den Anlage speichern-Dialog für diese Datei an.
- Alle Anlagen speichern: Öffnet den Dialog aus Bild 4, der alle enthaltenen Anlagen zum Auswählen anzeigt. Nach einem Klick auf OK kann man noch das Zielverzeichnis auswählen, in das dann alle Anlagen gespeichert werden.
Bild 4: Dialog zur Auswahl, welche Attachments gespeichert werden sollen
Die gleichen Befehle finden wir in dem Ribbon-Tab, der beim Aktivieren eines der Attachments aktiviert wird.