Beitrag aus SmartTools Outlook Weekly
Erledigte Aufgaben automatisch in andere Ordner verschieben
Outlook 365 2024 2021 2019 2016 2013
Wenn Sie Aufgaben als "Erledigt" kennzeichnen, möchten Sie sie häufig aus dem Standard-Aufgabenordner in einen anderen Ordner verschieben. Automatisch ist das nicht ohne weiteres möglich, denn Regeln können Sie nur für E-Mail-Nachrichten definieren. Um die Arbeit mit Aufgaben zu automatisieren, können Sie auf die VBA-Lösung aus diesem Tipp zurückgreifen. Eine Aufgabe aus dem Standardordner "Aufgaben" wird automatisch in den darunter befindlichen Unterordner "Erledigte Aufgaben" verschoben, sobald Sie die Aufgabe als "Erledigt" markieren.
- Drücken Sie in Outlook die Tastenkombination Alt + F11, um in den Visual Basic-Editor zu wechseln.
- Auf der linken Seite des Visual Basic-Editors sehen Sie den Projekt-Explorer mit dem Projektnamen "Projekt1" (je nach Outlook-Version noch mit dem Zusatz "VbaProject.OTM"). Öffnen Sie die untergeordneten Ebenen, sofern diese noch nicht angezeigt werden, indem Sie auf das kleine Plussymbol neben dem Projektnamen klicken. Danach öffnen Sie auch die Ebene "Microsoft (Office) Outlook Objekte". Anschließend doppelklicken Sie auf den Eintrag "ThisOutlookSession" .bzw. "DieseOutlookSitzung".
- In das daraufhin eingeblendete Codefenster geben Sie folgenden VBA-Code ein:
Public WithEvents MyTaskitems As Items
Private Sub Application_Quit()
Set MyTaskitems = Nothing
End Sub
Private Sub Application_Startup()
Set MyTaskitems = Application _
.GetNamespace("MAPI") _
.GetDefaultFolder(olFolderTasks) _
.Items
End Sub
Private Sub MyTaskitems_ItemChange(ByVal Item As Object)
Dim MyTask As TaskItem
Dim TargetFolder As MAPIFolder
On Error Resume Next
If TypeName(Item) = "TaskItem" Then
Set MyTask = Item
If MyTask.Complete = True Then
Set TargetFolder = Application _
.GetNamespace("MAPI") _
.GetDefaultFolder(olFolderTasks) _
.Folders("Erledigte Aufgaben")
If TargetFolder Is Nothing Then
MsgBox "Zielordner nicht vorhanden!"
Exit Sub
End If
MyTask.Move TargetFolder
Set TargetFolder = Nothing
End If
Set MyTask = Nothing
End If
End Sub
- Wählen Sie das Menü Datei-Schließen und zurück zu Microsoft (Office) Outlook an.
- Wechseln Sie auf das Register "Datei" und klicken auf Optionen. Im daraufhin angezeigten Dialog wählen Sie in die Kategorie Trust Center an und klicken auf die Schaltfläche Einstellungen für das Trust Center . Wählen Sie danach die Kategorie Makroeinstellungen.
- Stellen Sie die Sicherheitsstufe auf Benachrichtigungen für alle Makros ein und bestätigen Sie die Einstellung mit Ok.
- Beenden Sie Outlook. Dabei klicken Sie auf Ja, wenn Sie gefragt werden, ob Sie das VBA-Projekt speichern wollen.
- Starten Sie Outlook neu. Es sollte ein Hinweis erscheinen, dass "ThisOutlookSession" bzw. "DieseOutlookSitzung" Makros enthält. Klicken Sie dann auf Makros aktivieren.
Wenn Sie nun in den Ordner "Aufgaben" wechseln und eine Aufgabe als "Erledigt" markieren (egal ob per Kontrollkästchen in der Listenansicht oder per Status-Änderung in einem Aufgabenfenster und anschließendem Speichern), verschiebt sie Outlook automatisch in den Ordner "Erledigte Aufgaben". Dabei muss es sich um einen Unterordner des Standard-Aufgabenordners handeln. Sollte der Ordner nicht vorhanden sein, erscheint eine Fehlermeldung.
Die VBA-Lösung basiert auf Ereignisprozeduren für die Elemente im Aufgabenordner. Wenn Änderungen an einem Element vorgenommen werden, führt Outlook automatisch die Prozedur "MyTaskitems_ItemChange" aus. Darin wird geprüft, ob das geänderte Element überhaupt eine Aufgabe ist. Anschließend erfolgt eine Kontrolle, ob der Status "Erledigt" zugewiesen worden ist ("Complete"-Eigenschaft). Wenn das der Fall ist, stellt die Prozedur den Zielordner (Objektvariable "TargetFolder") ein und verschiebt die Aufgabe, sofern dieser Ordner vorhanden ist.