Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Outlook 2010: Änderung der 'Ganztags Ereignis' - Zeitvorgabe
zurück: Nach mehreren Betreffen suchen (Outlook) weiter: Anmeldekennwort mit VBA eintragen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
_Joachim_
Im Profil kannst Du frei den Rang ändern


Verfasst am:
19. Feb 2014, 15:36
Rufname:

Outlook 2010: Änderung der 'Ganztags Ereignis' - Zeitvorgabe - Outlook 2010: Änderung der 'Ganztags Ereignis' - Zeitvorgabe

Nach oben
       Version: Office 2010

Wie wohl bekannt ist die Outlook-Standard-Erinnerungsvorgabe bei 'ganztägigen Terminen' auf 18 Stunden fest vorgegeben, so dass Erinnerungen am Vortag um 6:00 Uhr stattfinden Surprised .
Im Netz gibt es einige Beiträge zu diesem Thema - auch bzgl. der Kundenfreundlichkeit Microsofts, hier die Möglichkeit einer eigenen Vorgabe zu verwehren.

Angespornt von Torsten Webers Beitrag (http://blogs.compactframework.de/Torsten.Weber/2008/08/18/18hStandarderinnerung+Bei+Microsoft+Outlook+Anpassen.aspx) habe ich eine andere Lösung implementiert (siehe "Funktionen / Bedienung" im VBA-Code unten), die einerseits eine andere Vorgabezeit definiert, manuelle Änderungen der Reminder-Vorgabe akzeptiert und beibehält sowie ein Rücksetzen auf die neue Vorgabezeit erlaubt.

Hinweise und Verbesserungsvorschläge sind gern gesehen.

In diesem Sinne.


Code:

Option Explicit

'==============================================================================================================
'***    Objekt-Name:                            DieseOutlookSitzung | ThisOutlookSession                    ***
'***    Modulversion/-datum:                    1.01 / 18.02.2014                                           ***
'***    Modulfunktion / -name:                  ChangeDefaultReminderMinutesBeforeStart                     ***
'***   --------------------------------------------------------------------------------------------------   ***
'***    Änderung der Outlook-Default-Erinnerungsvorgabe von 18 Stunden bei 'Ganztägigen Ereignissen';       ***
'***    siehe: 'mlNewReminderMinutesBeforeStart'.                                                           ***
'***    Die neue Reminder-Vorgabe wird bereits beim Öffnen eines neuen Kalendereintrags gesetzt, so dass    ***
'***    diese sofort korrekt angezeigt wird. Außerdem werden manuelle Änderungen der Reminder-Zeitvorgabe   ***
'***    beibehalten.                                                                                        ***
'***    Nach manuellen Reminder-Änderungen kann mittels Aus- und Einschalten von 'Ganztägiges Ereignis'     ***
'***    die neue Standardvorgabe ('mlNewReminderMinutesBeforeStart') wieder hergestellt werden; sofern      ***
'***    die Erinnerungsfunktion nicht ausgeschaltet wurde. Ggf. ist die Reminder-Funktion auf einen be-     ***
'***    liebigen Wert einzuschalten und 'Ganztägiges Ereignis' aus- und wieder einzuschalten.               ***
'***   --------------------------------------------------------------------------------------------------   ***
'***    Environment:                            Windows 7 (Ultinmate) - 64 Bit, Build 7601                  ***
'***                                            Outlook 2010, Version: 14.0.7113.5005 (32-Bit)              ***
'***                                            VBA-Version: 7.0.1628.                                      ***
'***   --------------------------------------------------------------------------------------------------   ***
'***    Autor:                                  _Joachim_                                                   ***
'==============================================================================================================

Private WithEvents Inspectors As Outlook.Inspectors
Private WithEvents Appointment As Outlook.AppointmentItem

Private Const mlNewReminderMinutesBeforeStart As Long = 14 * 60                         ' Neue Erinnerungsvorgabe: 14 Stunden


Private Sub Application_Startup()                                                       ' Initialisierung / Start von Outlook ...
  Set Inspectors = Application.Inspectors                                               ' Inspector-Objekt
End Sub


Private Sub Inspectors_NewInspector(ByVal Inspector As Outlook.Inspector)               ' Inspector-Objekt auswerten ...
  If TypeOf Inspector.CurrentItem Is Outlook.AppointmentItem Then
    Set Appointment = Inspector.CurrentItem                                             ' ein Kalender-Ereignis-Objekt ...
  End If
End Sub


Private Sub Appointment_Open(Cancel As Boolean)                                         ' Öffnen eines neuen / vorhandenen Termins ...
  With Appointment
    If .AllDayEvent Then                                                                ' 'Ganztägiges Ereignis' ...
      If .Size = 0 Then .ReminderMinutesBeforeStart = mlNewReminderMinutesBeforeStart   ' neuer Event => neuen Standard-Reminder vorgeben
    End If
  End With
End Sub


Private Sub Appointment_PropertyChange(ByVal Name As String)                            ' Änderungen der (Reminder-) Eigenschaften ...
  Static bAllDayEvent As Boolean, bChangedRMBS As Boolean, lOldRMBS As Long
  Select Case Name
    Case "AllDayEvent": bChangedRMBS = Appointment.AllDayEvent <> bAllDayEvent          ' festhalten, ob 'AllDayEvent' geändert wurde
                        bAllDayEvent = Appointment.AllDayEvent
    Case "ReminderMinutesBeforeStart":                                                  ' alten Wert merken und neue Vorgabe (vorläufig) setzen
                        lOldRMBS = Appointment.ReminderMinutesBeforeStart               '   wenn 'AllDayEvent' geändert und 'AllDayEvent' = true ...
                        If bChangedRMBS And Appointment.AllDayEvent Then Appointment.ReminderMinutesBeforeStart = mlNewReminderMinutesBeforeStart
    Case "ReminderSet": Appointment.ReminderMinutesBeforeStart = lOldRMBS               ' alten Wert zurücksetzen, da Reminder manuell geändert
  End Select
End Sub
'===   Ende von: 'ChangeDefaultReminderMinutesBeforeStart'   ==================================================


PS: Update der 'Appointment_Open' Prozedur / 25.02.2014.
_Joachim_
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. März 2014, 17:11
Rufname:


AW: Outlook 2010: Änderung der 'Ganztags Ereignis' - Zeitvor - AW: Outlook 2010: Änderung der 'Ganztags Ereignis' - Zeitvor

Nach oben
       Version: Office 2010

Nichts ist so gut, dass man es nicht noch verbessern könnte Surprised .

In Form echter Kleinigkeiten könnte man mit minimalem Aufwand obigen Code etwas flexibilisieren.

Beispielsweise in dem man die Erinnerungszeit nicht fest vorgibt, sondern von der in Outlook eingestellten Arbeitszeit abhängig macht.
Gleichzeitig könnte man einen Zeit-Offset für Werktage einführen, wenn etwa ein paar Minuten vor oder nach Arbeitszeitbeginn erinnert werden soll - und für Wochenenden einen Anderen.

Im Modulkopf wären nötig:
Code:

Private Const mlTimeOffsetWorkdaysMinutes As Long = -10                                 ' Erinnerungen an Werktagen etwas verschieben
Private Const mlTimeOffsetNotWorkdaysMinutes As Long = 120                              ' Erinnerungen an Wochenenden später erfolgen lassen
Private mlNewReminderMinutesBeforeStart As Long                                         ' der errechnete neue Reminder-Vorlauf
Private mbDoNotEvents As Boolean                                                        ' (unterdrückt temp. unnötige Prozedur-Ausführungen)


... und weiter ...
Code:

Private Sub Appointment_Open(Cancel As Boolean)                                         ' Öffnen eines neuen / vorhandenen Termins ...
  Dim dtmpDateTime As Date
  With Appointment
    If .AllDayEvent Then                                                                ' eingestellte Arbeitszeit holen ...
      mbDoNotEvents = True                                                              '   Ausführung von 'Appointment_PropertyChange' unterbinden
      .AllDayEvent = False                                                              '   'Ganztägiges Ereignis' ausschalten
      dtmpDateTime = .Start                                                             '   'Startzeit' des Events (= 'Arbeitszeitbeginn') holen
      .AllDayEvent = True                                                               '   und 'Ganztägiges Ereignis' wieder einschalten
      mbDoNotEvents = False                                                             '   Ausführung von 'Appointment_PropertyChange' wieder erlauben
    Else                                                                                ' kein 'Ganztägiges Ereignis' ...
      dtmpDateTime = .Start                                                             '   'Startzeit' des Events (= 'Arbeitszeitbeginn') holen
    End If
    Select Case Weekday(DateValue(dtmpDateTime) - 1)                                    ' Vortag der Startzeit = Erinnerungstag
      Case vbSaturday, vbSunday:  mlNewReminderMinutesBeforeStart = (24 - Hour(dtmpDateTime)) * 60 _
                                                                     - Minute(dtmpDateTime) _
                                                                     - mlTimeOffsetNotWorkdaysMinutes
      Case Else:                  mlNewReminderMinutesBeforeStart = (24 - Hour(dtmpDateTime)) * 60 _
                                                                     - Minute(dtmpDateTime) _
                                                                     - mlTimeOffsetWorkdaysMinutes
    End Select
    If .AllDayEvent Then                                                                ' 'Ganztägiges Ereignis' ...
      If .Size = 0 Then .ReminderMinutesBeforeStart = mlNewReminderMinutesBeforeStart   ' neuer Event => neuen Standard-Reminder direkt vorgeben
    End If
  End With
End Sub


... und abschließend könnte der Kopf der 'Appointment_PropertyChange' so aussehen ...
Code:
 
Private Sub Appointment_PropertyChange(ByVal Name As String)                            '´ Änderungen der (Reminder-) Eigenschaften ...
  Static bAllDayEvent As Boolean, bChangedRMBS As Boolean, lOldRMBS As Long
  If mbDoNotEvents Then Exit Sub                                                        '´ 'Events unterbinden'
  With Appointment
    ...


"If mbDoNotEvents Then Exit Sub" verhindert dabei die weitere Ausführung der Sub, wenn 'Appointment_Open' die '.AllDayEvent' temporär ändert.

So, das soll es hier gewesen sein. Obwohl ...
Die Flexibilisierung natürlich noch weiter getrieben werden könnte. Die Werktage könnten aus den Outlook-Einstellungen entnommen, Kategorien berücksichtigt, ... werden und schließlich vielleicht sogar 'nur Werktage' als Reminder-Datum akzeptiert werden. Und das Ganze natürlich so, dass man es ohne Zugriff auf den VBA-Code jederzeit ändern könnte.

In diesem Sinne.


PS: Anregungen, Verbesserungsvorschläge sind nach wie vor Willkommen.

_________________
Mit freundlichen Grüßen
Joachim
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Bekanntmachung: Outlook Mail: Bitte Versionsnummer von Outlook mit angeben !! 1 domin8tor 9436 06. März 2004, 12:42
domin8tor Bitte Versionsnummer von  Outlook mit angeben !!
Keine neuen Beiträge Outlook Mail: Fehlermeldung bei Outlook 2002 unter XP mit SP2 0 pillar 1295 09. Jul 2004, 08:18
pillar Fehlermeldung bei Outlook 2002 unter XP mit SP2
Keine neuen Beiträge Outlook Mail: Outlook versendet Doppelte eMails an Selbstdef. Verteiler 0 ichbinsnur 2638 08. Jul 2004, 13:22
ichbinsnur Outlook versendet Doppelte eMails an Selbstdef. Verteiler
Keine neuen Beiträge Outlook Mail: Outlook Web Access 0 =(Apache)= Com. 2019 01. Jul 2004, 13:07
=(Apache)= Com. Outlook Web Access
Keine neuen Beiträge Outlook Mail: Outlook druckt HTML mails ohne linken Rand 1 kubu 3429 24. Jun 2004, 14:59
kubu Outlook druckt HTML mails ohne linken Rand
Keine neuen Beiträge Outlook Mail: Überschreibemodus Outlook 1 Mutzi 4451 21. Jun 2004, 21:36
Amethyst Überschreibemodus Outlook
Keine neuen Beiträge Outlook Mail: Outlook 2003 "Sie haben Post" funktioniert nicht 8 grit_manuela 10739 16. Jun 2004, 22:25
stneaga Outlook 2003 "Sie haben Post" funktioniert nicht
Keine neuen Beiträge Outlook Mail: Outlook 2003 ---> kann keine mails mit anlage versenden 2 Joddi 5720 14. Jun 2004, 15:40
Joddi Outlook 2003 ---> kann keine mails mit anlage versenden
Keine neuen Beiträge Outlook Mail: Hilfe! Filterregel für Outlook 2002 - nicht vom Server laden 1 ulli 2132 07. Jun 2004, 11:54
JoernZ Hilfe! Filterregel für Outlook 2002 - nicht vom Server laden
Keine neuen Beiträge Outlook Mail: Sicherheitseinstellung von outlook verstellen 2 Philippe Sch. 3474 15. Mai 2004, 18:24
Gast Sicherheitseinstellung von outlook verstellen
Keine neuen Beiträge Outlook Mail: Outlook 2003: Automatisches Empfangen abschalten? 3 Kiss 5206 23. März 2004, 19:27
domin8tor Outlook 2003: Automatisches Empfangen abschalten?
Keine neuen Beiträge Outlook Mail: Autovervollständigung der E-Mailadresse unter Outlook 2000 3 bendiel 7979 15. März 2004, 14:22
domin8tor Autovervollständigung der E-Mailadresse unter Outlook 2000
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Access Tabellen