Automatische Umwandlung von E-Mails in Outlook Aufgaben per VBA

Outlook VBA

Mit Hilfe eines VBA-Skripts in Microsoft Outlook können Sie eine Regel erstellen, die E-Mails mit einer bestimmten Betreffzeile automatisch in eine Aufgabe umwandelt und zusätzliche Attribute wie Kategorien und Fälligkeitsdatum hinzufügt. Hier ist ein erweitertes Beispiel, wie Sie das Skript anpassen können:

 

Public Sub ConvertEmailToTask(Item As Outlook.MailItem)
Dim myTask As Outlook.TaskItem

' Prüfen, ob der Betreff der E-Mail einem bestimmten Muster entspricht
If InStr(Item.Subject, "Spezifischer Betreff") Then
Set myTask = Application.CreateItem(olTaskItem)
With myTask
.Subject = Item.Subject
.Body = Item.Body

' Fälligkeitsdatum setzen: z.B. 7 Tage nach dem Empfang der E-Mail
.DueDate = Item.ReceivedTime + 7

' Startdatum setzen: z.B. am Tag des E-Mail-Empfangs
.StartDate = Item.ReceivedTime

' Kategorie setzen
.Categories = "Meine Kategorie" ' Stellen Sie sicher, dass diese Kategorie in Outlook existiert

.ReminderSet = True
.ReminderTime = Item.ReceivedTime + 1 ' Erinnerung einen Tag nach E-Mail-Empfang
.Save
End With
End If
End Sub

Wichtige Punkte zur Anpassung:

  • Fälligkeitsdatum (DueDate): Hier wird das Fälligkeitsdatum auf 7 Tage nach dem Empfang der E-Mail gesetzt. Sie können den Wert 7 an Ihre Bedürfnisse anpassen.
  • Startdatum (StartDate): Das Startdatum wird auf das Empfangsdatum der E-Mail gesetzt. Auch hier können Sie den Wert anpassen.
  • Kategorien (Categories): Sie können eine Kategorie festlegen, die bereits in Ihrem Outlook existiert. Wenn Sie eine nicht existierende Kategorie angeben, wird sie in Outlook ohne Farbe angezeigt, da sie nicht in der Masterliste enthalten ist.
  • Prüfung des Betreffs: Passen Sie den Text "Spezifischer Betreff" im InStr-Aufruf an den Betreff an, den Sie filtern möchten

 

So geht es mit einem Anhang

 

Public Sub ConvertEmailToTask(Item As Outlook.MailItem)
Dim myTask As Outlook.TaskItem
Dim attachment As Outlook.Attachment
Dim tempFolderPath As String
Dim tempFilePath As String

' Prüfen, ob der Betreff der E-Mail einem bestimmten Muster entspricht
If InStr(Item.Subject, "Spezifischer Betreff") Then
Set myTask = Application.CreateItem(olTaskItem)
With myTask
.Subject = Item.Subject
.Body = Item.Body

' Überprüfen, ob die E-Mail Anhänge enthält
If Item.Attachments.Count > 0 Then
' Temporären Pfad für Anhang erstellen
tempFolderPath = Environ("TEMP") & "\"

For Each attachment In Item.Attachments
' Temporären Dateipfad erstellen
tempFilePath = tempFolderPath & attachment.FileName
' Anhang speichern
attachment.SaveAsFile tempFilePath
' Anhang zur Aufgabe hinzufügen
.Attachments.Add tempFilePath
Next attachment
End If

' Weitere Eigenschaften einstellen...
.DueDate = Item.ReceivedTime + 7
.Categories = "Meine Kategorie"
.ReminderSet = True
.ReminderTime = Item.ReceivedTime + 1
.Save
End With
End If
End Sub

 

Um ein E-Mail-Element als Anhang zu einer Aufgabe hinzuzufügen, können Sie den VBA-Code erweitern, indem Sie den Code zum Kopieren des Anhangs aus der E-Mail und zum Hinzufügen dieses Anhangs zur Aufgabe hinzufügen. Hier ist ein Beispiel, wie Sie dies tun können

Zusätzlicher Tipp:

  • Stellen Sie sicher, dass Sie die Grenzen für die Größe von Aufgabenanhängen in Outlook beachten. Große Anhänge können möglicherweise nicht hinzugefügt werden oder Probleme verursachen.

 

VBA-Skript zum Senden einer Aufgabenanfrage

Das Senden einer Aufgabenanforderung in Outlook mit VBA erfordert einige spezifische Anpassungen an Ihrem Skript. Hier ist ein Beispiel, wie Sie den Code ändern können, um eine Aufgabenanfrage an einen bestimmten Empfänger zu senden:

Public Sub ConvertEmailToTaskAndSendRequest(Item As Outlook.MailItem)
Dim myTask As Outlook.TaskItem
Dim myRecipient As Outlook.Recipient

' Prüfen, ob der Betreff der E-Mail einem bestimmten Muster entspricht
If InStr(Item.Subject, "Spezifischer Betreff") Then
Set myTask = Application.CreateItem(olTaskItem)
With myTask
.Subject = Item.Subject
.Body = Item.Body

' Aufgabenattribute einstellen
.DueDate = Item.ReceivedTime + 7
.Categories = "Meine Kategorie"
.ReminderSet = True
.ReminderTime = Item.ReceivedTime + 1

' Zuweisung der Aufgabe
.Assign

' Empfänger hinzufügen
Set myRecipient = .Recipients.Add("email@address.com")
myRecipient.Resolve

' Senden der Aufgabenanfrage
.Send
End With
End If
End Sub

 

Wichtige Punkte zur Anpassung:

  • Empfänger hinzufügen (Recipients.Add): Ersetzen Sie "email@address.com" mit der E-Mail-Adresse des Empfängers. Es wird empfohlen, die vollständige E-Mail-Adresse zu verwenden, um Verwechslungen zu vermeiden.
  • Aufgabenattribute: Setzen Sie Fälligkeitsdatum, Kategorien und Erinnerungen wie zuvor beschrieben.
  • Aufgabe zuweisen (Assign): Durch den Aufruf von .Assign wird die Aufgabe zur Aufgabenanfrage.
  • Senden (Send): Anstatt die Aufgabe zu speichern, wird sie mit .Send direkt als Aufgabenanfrage gesendet.

Regel per Skript ausführen

In der Vergangenheit war dies sehr einfach über das Outlook-Regelwerk möglich. Leider wurde diese Möglichkeit aus Sicherheitsgründen aus Outlook entfernt.

Es gibt allerdings zwei Alternativen dazu.

  1. Reaktivieren der Funktion
  2. Ausführen über das ItemAdd-Ereignis

Zu 1. haben wir bereits einen Beitrag verfasst:

Die Regelaktion “Script ausführen” funktioniert nicht mehr und kann nicht für eine neue Regel ausgewählt werden

zu 2. Schritt-für-Schritt-Anleitung für das ItemAdd-Ereignis

  • Outlook öffnen und VBA-Editor starten: Starten Sie Outlook und öffnen Sie den VBA-Editor mit Alt + F11.
  • Ein neues Modul hinzufügen: Fügen Sie ein neues Modul hinzu, indem Sie in der linken Spalte des VBA-Editors mit der rechten Maustaste auf Ihr Outlook-Projekt klicken und Einfügen > Modul wählen.
  • VBA-Code schreiben: Schreiben Sie den VBA-Code im neuen Modul. Hier ist ein Beispielcode, der jedes Mal ausgeführt wird, wenn ein neues Element zum Posteingang hinzugefügt wird:

Private WithEvents Inbox As Outlook.Items

Private Sub Application_Startup()
Set Inbox = Application.Session.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub Inbox_ItemAdd(ByVal Item As Object)
If TypeOf Item Is Outlook.MailItem Then
' Hier Ihren Code einfügen
MsgBox "Neue E-Mail erhalten: " & Item.Subject
End If
End Sub

  • Dieser Code setzt einen Ereignishandler für neue Elemente im Posteingang und zeigt eine Nachrichtenbox mit dem Betreff der E-Mail an.
  • Sicherheitseinstellungen überprüfen: Stellen Sie sicher, dass Ihre Outlook-Makroeinstellungen das Ausführen des Codes zulassen.
  • Outlook neu starten: Nachdem Sie den Code geschrieben und gespeichert haben, starten Sie Outlook neu, damit das Application_Startup-Ereignis ausgelöst wird.
  • Testen: Senden Sie eine E-Mail an Ihren Posteingang, um zu testen, ob der Code wie erwartet funktioniert.

Alternative Lösungen

  • Regeln und Skripte in anderen Programmen: Sie könnten auch externe Automatisierungswerkzeuge oder Skripte verwenden, die mit Outlook interagieren, um ähnliche Funktionen zu implementieren.
  • Outlook Add-Ins: Ein weiterer Ansatz könnte darin bestehen, ein Outlook-Add-In zu entwickeln, das erweiterte Anpassungen und Funktionalitäten ermöglicht.

-

Vorheriger Artikel Nächster Artikel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

CAPTCHA eingeben * Das Zeitlimit ist erschöpft. Bitte CAPTCHA neu laden.