So ändern Sie die Einstellungen für die Abwesenheit in Outlook 2010 über VBA

3728
Zach

Ich arbeite für ein MSP und wir haben ein einziges Postfach, mit dem wir eingehende E-Mail-Anfragen an unser Ticketsystem bearbeiten. Ich habe ein VBA-Skript erstellt, das neue E-Mails und dergleichen ausführt und verarbeitet. Wir verwenden Outlook 2010 (32-Bit) und verwenden Office 365 [Exchange 2013] .

Wir möchten jetzt eine Abwesenheitsnachricht in der Mailbox für spätere Stunden und Feiertage automatisch aktivieren und deaktivieren. Ich habe bereits den Großteil des Codes geschrieben, um nach laufenden Besprechungen zu suchen, durch die das Abwesenheitsergebnis beim Start / Ende der Besprechungen aktiviert und deaktiviert werden könnte. Auf diese Weise können wir jeden Tag um 17.00 Uhr eine Besprechung einrichten, um die OOF-Nachricht einzuschalten, und um 4 Uhr morgens, um sie zu deaktivieren. Dies funktioniert auch mit All Day Events (z. B. Feiertage).

Das einzige Problem, das ich habe, ist das Einstellen der eigentlichen OOF-Nachricht zum Aktivieren / Deaktivieren und Ändern des Nachrichtentexts. Wir möchten den Nachrichtentext auf Basis von festlegen können

Im Folgenden sind die Ausschnitte, die ich habe, die den OOF-Status erhalten und OOF basierend auf verschiedenen Suchvorgängen, die ich durchgeführt habe, aktivieren / deaktivieren. Anscheinend wäre CDO 1.21 der einfachste Weg, aber Outlook 2010 scheint CDO 1.21 nicht zu unterstützen.

OOF-Status erwerben

Private Function QOA_GetOOFStatus()  Dim oNS As Outlook.NameSpace Dim oStores As Outlook.Stores Dim oStr As Outlook.Store Dim oPrp As Outlook.PropertyAccessor Dim OOFStatus As Boolean  OOFStatus = False   Set oNS = Application.GetNamespace("MAPI") Set oStores = oNS.Stores  For Each oStr In oStores If oStr.ExchangeStoreType = olPrimaryExchangeMailbox Then Set oPrp = oStr.PropertyAccessor OOFStatus = oPrp.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B") End If Next tempValue = OOFStatus  QOA_GetOOFStatus = OOFStatus  End Function 

Aktivieren / Deaktivieren von OOF mit Textnachricht

Const PR_OOF_STATE = "http://schemas.microsoft.com/mapi/proptag/0x661D000B"  Dim oStore As Outlook.Store, oProp As Outlook.PropertyAccessor Dim oStorageItem As Outlook.StorageItem  Set oStorageItem = Application.Session.GetDefaultFolder(olFolderInbox).GetStorage("IPM.Note.Rules.OofTemplate.Microsoft", olIdentifyByMessageClass)  oStorageItem.Body = "I am out of the office!" oStorageItem.Save   For Each oStore In Session.Stores If oStore.ExchangeStoreType = olPrimaryExchangeMailbox Then  Set oProp = oStore.PropertyAccessor oProp.SetProperty PR_OOF_STATE, True  End If Next Set olkIS = Nothing Set olkPA = Nothing 

Ich vermute, es gibt etwas mit den internen und externen OOF-Antworten von Exchange 2010, 2013 zu tun.

Ich bin nicht dagegen, ein externes Programm auszuführen, das OOF-Meldungen setzt.

Irgendwelche Vorschläge oder Gedanken, wie ich vorgehen kann? Ich würde es hassen, aufgeben zu müssen, wenn ich nur den Weg finde, OOF zu deaktivieren / aktivieren!

4
Ist es nicht nur OutOfOffice True oder False? Raystafarian vor 10 Jahren 0
@ Raystafarian Ich bin mir nicht ganz sicher was du meinst? Zach vor 10 Jahren 0
Ja, ich denke das ist alt. Da OOO eine "Regel" ist, gibt es kein * Toggle * für Ein / Aus, nur die Regel anwenden oder nicht. Entschuldigung, ich könnte nicht besser helfen. Raystafarian vor 10 Jahren 0

1 Antwort auf die Frage

1
Zach

Ich entschied mich dazu, EWSOofUtil.dll zu verwenden und ein externes Powershell-Skript zu erstellen, um meinen Text in AppointmentItem an die Nachricht zu übergeben. Die EWSOofUtil.dll setzt die Abwesenheit mit EWS.