Outlook 2013 Kalendereintrag per Regel akzeptieren und löschen
Hallo,
ich möchte das bestimmte Kalendereinträge automatisiert z. B. durch eine Regel akzeptiert werden.
Zur Erklärung:
Wir haben folgendes Szenario.
Einzelne Mitarbeiter übernehmen für bestimmte Kunden den Support. Das wird in ein Excel File eingetragen und in SAP verarbeitet.
Soweit so gut....
Jetzt hat ein Mitarbeiter aber z.B. 10 Kunden für die er Support übernimmt und bekommt dann von SAP eine automatisch generierte Email zugeschickt (Die Order Nummer ist im Betreff enthalten), wo
der entsprechende Zeitraum für den Kalender aufgeführt ist.
Pro Kunde eine Mail. Jetzt hast du wie gesagt 10 Kunden und bekommst dann 10 Kalendereinträge per Mail zugeschickt und musst diese dann entsprechend öffnen und speichern, damit der Eintrag im Kalender übernommen wird. Das ganze aber auch, wenn sich kurzfristig etwas ändert oder der Eintrag gelöscht wird, da ich z.B. den Support abgebeben habe.
Sehr lästig und nervig.
Meine Überlegung ist, eine Regel zu erstellen, die automatisch den Kalendereintrag akzeptiert und die Mail dann löscht.
Bei Absage bzw. Austrag aus dem Kalender dasselbe. Eine Regel die automatisch den Kalendereintrag löscht.
Dazu habe ich in den Regeln aber keinen Eintrag gefunden.
Kann ich so eine Regel selbst erstellen (evtl. vba)?
Über jeden Hinweis etc. bin ich dankbar.
Schon mal herzlichen Dank
Gruß
Marcus
ich möchte das bestimmte Kalendereinträge automatisiert z. B. durch eine Regel akzeptiert werden.
Zur Erklärung:
Wir haben folgendes Szenario.
Einzelne Mitarbeiter übernehmen für bestimmte Kunden den Support. Das wird in ein Excel File eingetragen und in SAP verarbeitet.
Soweit so gut....
Jetzt hat ein Mitarbeiter aber z.B. 10 Kunden für die er Support übernimmt und bekommt dann von SAP eine automatisch generierte Email zugeschickt (Die Order Nummer ist im Betreff enthalten), wo
der entsprechende Zeitraum für den Kalender aufgeführt ist.
Pro Kunde eine Mail. Jetzt hast du wie gesagt 10 Kunden und bekommst dann 10 Kalendereinträge per Mail zugeschickt und musst diese dann entsprechend öffnen und speichern, damit der Eintrag im Kalender übernommen wird. Das ganze aber auch, wenn sich kurzfristig etwas ändert oder der Eintrag gelöscht wird, da ich z.B. den Support abgebeben habe.
Sehr lästig und nervig.
Meine Überlegung ist, eine Regel zu erstellen, die automatisch den Kalendereintrag akzeptiert und die Mail dann löscht.
Bei Absage bzw. Austrag aus dem Kalender dasselbe. Eine Regel die automatisch den Kalendereintrag löscht.
Dazu habe ich in den Regeln aber keinen Eintrag gefunden.
Kann ich so eine Regel selbst erstellen (evtl. vba)?
Über jeden Hinweis etc. bin ich dankbar.
Schon mal herzlichen Dank
Gruß
Marcus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 335995
Url: https://administrator.de/forum/outlook-2013-kalendereintrag-per-regel-akzeptieren-und-loeschen-335995.html
Ausgedruckt am: 24.05.2025 um 11:05 Uhr
27 Kommentare
Neuester Kommentar

Kann ich so eine Regel selbst erstellen (evtl. vba)?
AppointmentItem.Respond Method (Outlook)oder
Ressourcen-Postfach am Exchange mit Buchungsautomatik erstellen?
Gruß

Mach einfach eine For-Each-Schleife über das Ergebnis des Finds und prüfe dann per IF-Abfrage die Eigenschaft Subject
.

for each m in myMtgReq
'und hier dann statt myMtgReq das 'm' einsetzen. (Laufvariable)
Next

Du hast das m nicht in den anderen Zeilen innerhalb der For-Schleife ersetzt
. Denn in myMtgReq sind mehrere Items die du mit der Schleife durchläufst und dann innerhalb der Schleife "einzeln" mit dem m ansprichst.
Ab und zu sollte man auch Dokus lesen
Das sind einfachste Grundlagen die du überall nachlesen kannst.
Wenn du das nicht willst, fang gar nicht erst das Programmieren an!!
Ab und zu sollte man auch Dokus lesen
Wenn du das nicht willst, fang gar nicht erst das Programmieren an!!

Aber der Anfang der Schleife ist glaube ich schon fehlerhaft. Muss das m nicht noch deklariert werden?
Musst du nicht wenn du nicht Option Explicit am Anfang des Codes stehen hast Dim myMtgReq As Items

Zitat von @speedy132:
Allerdings weiß ich auch nicht, wo ich so etwas spezielles in kürzester Zeit nachlesen soll.
In den Grundlagen zu VBA steht's.Allerdings weiß ich auch nicht, wo ich so etwas spezielles in kürzester Zeit nachlesen soll.
Als was muss ich denn dann mymtgReq deklarieren?
Steht oben.
Logisch, weil du mit
Speichere die Elemente die gelöscht werden sollen in einer weiteren Collection zwischen und lösche die Elemente der Collection am Ende der Sub. Fertig.
p.s. Schon mal was von Codetags hier im Forum gehört?
</> links in deiner Symbolleiste!!
m.Delete
die Items-Collection in der Schleife veränderst, also Items raus löschst, deswegen werden Elemente übersprungen.Speichere die Elemente die gelöscht werden sollen in einer weiteren Collection zwischen und lösche die Elemente der Collection am Ende der Sub. Fertig.
p.s. Schon mal was von Codetags hier im Forum gehört?
</> links in deiner Symbolleiste!!

Lese und lerne!
http://analystcave.com/vba-collection/
http://analystcave.com/vba-collection/

Na die Delete-Methode des Items aufrufen, es ist ja immer noch ein AppointmentItem.
for each element in mycol
element.Delete
Next

Find ich super das es hier auch User wie dich gibt denen man nicht alles vorbeten muss sondern die sich minimal mit der Materie auseinandersetzen mit den Infos die man Ihnen gibt! Daumen hoch!

Zitat von @speedy132:
Ja, das hat mich aber auch Nerven und Zeit gekostet. Aber das Ergebnis ist prima.
Und du hast vor allem auch was gelernt.Ja, das hat mich aber auch Nerven und Zeit gekostet. Aber das Ergebnis ist prima.
Hat aber auch Spaß gemacht. Wahnsinn was man alles so mit so ein paar Codezeilen erreichen kann.
Schön zu hören, so solls sein.Danke und Gruß
Gerne, und weiterhin erfolgreiches Coding.
Du nimmst das NewMailEx Event dazu in ThisOutlookSession:
Da mehrere Mails auf einmal eintreffen können enthält die Event-Variable "EntryIDCollection" mehrere uniqueIDs der Mails welche mit einer For-Schleife nacheinander verarbeitet werden. objItem enthält dann in der Schleife jeweils das Mail-Objekt mit dem du arbeiten kannst.
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim varEntryIDs, objItem As Object,i As Integer
varEntryIDs = Split(EntryIDCollection, ",")
For i = 0 To UBound(varEntryIDs)
Set objItem = Application.Session.GetItemFromID(varEntryIDs(i))
' in objItem ist die neue Mail zum verarbeiten
' hier also dein Code zum Verarbeiten der Mail
Next

Du hast das Prinzip von Schleifen anscheinend noch nicht ganz Verstanden.
Statt hier myMtgReq und eine zusätzliche Schleife zu verwenden nutzt du hier objItem da dies das gerade eingetroffene Objekt (also die Mail) beinhaltet! Du brauchst also in diesem Fall keine zusätzliche Schleife in der Schleife mehr weil du das einzelne Objekt direkt bearbeitest und nicht mehr alle Items des Ordners durchlaufen musst!
Statt hier myMtgReq und eine zusätzliche Schleife zu verwenden nutzt du hier objItem da dies das gerade eingetroffene Objekt (also die Mail) beinhaltet! Du brauchst also in diesem Fall keine zusätzliche Schleife in der Schleife mehr weil du das einzelne Objekt direkt bearbeitest und nicht mehr alle Items des Ordners durchlaufen musst!

Zitat von @speedy132:
Wie kann ich objItem mit mymtgReq austauschen? Das verstehe ich nicht, da die Eigenschaften oder Methoden von mymtgReq doch dann gar nicht zur Verfügung stehen.
Doch, du siehst sie nur nicht in der Intellisense weil es ein "Object" ist. Verfügbar sind sie trotzdem.Wie kann ich objItem mit mymtgReq austauschen? Das verstehe ich nicht, da die Eigenschaften oder Methoden von mymtgReq doch dann gar nicht zur Verfügung stehen.
Aber da zeigt sich bestimmt wieder meine Unwissenheit 
Jepp.Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim varEntryIDs, objItem As Object,i As Integer, col As New Collection
varEntryIDs = Split(EntryIDCollection, ",")
For i = 0 To UBound(varEntryIDs)
Set objItem = Application.Session.GetItemFromID(varEntryIDs(i))
If objItem.Subject = "I-55023414-:0" Or objItem.Subject = "I-55023399-:0" Then
Set myAppt = objItem.GetAssociatedAppointment(True)
Set myMtg = myAppt.Respond(olResponseAccepted, True)
myMtg.Send
objItem.UnRead = False
myCol.Add objItem
End If
If objItem.Subject = "U-55023414-:0" Or objItem.Subject = "U-55023399-:0" Then
Set myAppt = objItem.GetAssociatedAppointment(True)
Set myMtg = myAppt.Respond(olResponseAccepted, True)
objItem.UnRead = False
myCol.Add objItem
End If
Next
For Each element In myCol
element.Delete
Next
End Sub