4 votes

Comment activer automatiquement Out of Office lorsque Outlook est fermé ?

Est-il possible de faire en sorte qu'Outlook 2010 active la fonction "Réponses automatiques" lorsque je ferme l'application ? J'aime bien activer la fonction "Out of Office" à la fin de la journée, mais dans la précipitation, on l'oublie facilement.

5voto

KCotreau Points 25345

J'ai VRAIMENT essayé de faire en sorte que cela fonctionne pour vous, mais j'ai appris qu'Outlook 2010 ne supporte plus le CDO 1.2.1, et n'étant pas un programmeur, je n'avais pas les connaissances approfondies pour le coder d'une autre manière. Bien que non supporté et non recommandé par Microsoft (pourquoi le mentionnent-ils alors ??), il est possible d'installer CDO si vous avez Outlook 2007, avant de mettre à jour vers Outlook 2010.

http://support.microsoft.com/kb/2028411

Je vais publier comment faire cela dans Outlook 2003/2007 au cas où quelqu'un tomberait sur ce problème. Je viens de le tester. Je vais également publier les autres étapes pour Outlook 2010 en supposant que vous puissiez corriger le code.

Pour Outlook 2003/2007

  1. Pour Outlook 2007 uniquement, vous devez installer CDO ou le code échouera : http://www.microsoft.com/downloads/en/details.aspx?familyid=2714320d-c997-4de1-986f-24f081725d36&displaylang=en

  2. En supposant que la politique de groupe de votre entreprise ne l'emporte pas, changez la sécurité en Tools Macros Security a No Security Check for macros .

  3. Aller à Tools Macros Visual Basic Editor .

  4. Cliquez sur l'icône Visual Basic, puis appuyez sur F2 pour ouvrir le navigateur d'objets.

  5. Dans le nouveau projet, dans le volet de gauche, développez-le jusqu'à ce que vous voyez ThisOutlookSession et double-cliquez dessus.

  6. Coupez et collez le code suivant dans la fenêtre de code qui vient de s'ouvrir et enregistrez-le :

    Private Sub Application_Quit()
        Dim objMAPISession As Object
        Set objReminders = Nothing
        If MsgBox("Would you like to turn the Out of Office Assistant on?", vbYesNo, "Activate Out of Office Assistant") = vbYes Then
            Set objMAPISession = CreateObject("MAPI.Session")
            objMAPISession.Logon , , True, False
            objMAPISession.OutOfOffice = True
            objMAPISession.Logoff
        End If
        Set objMAPISession = Nothing
    End Sub
  7. Fermez et ouvrez Outlook.

  8. Il vous donnera un message sur les macros. Activez-les.

Pour Outlook 2010

Si vous pouvez réparer le code Voici les étapes à suivre pour Outlook 2010. Je les inclus parce que l'emplacement de nombreux éléments a changé, et pourrait être difficile à trouver. Dans le code actuel, je signale également l'étape qui échoue.

  1. En supposant que la politique de groupe de votre entreprise ne l'emporte pas, changez la sécurité en File Options Trust Center Trust Center Settings Macro Settings a Enable all macros .

  2. Commencez par activer le Developer onglet dans File Options Customize Ribbon , vérifier Developer dans la colonne de droite.

  3. Cliquez sur l'icône Visual Basic, puis appuyez sur F2 pour ouvrir le navigateur d'objets.

  4. Aller à Classes (colonne de gauche) ThisOutlookSession et double-cliquez dessus.

  5. Coupez et collez le code suivant dans la fenêtre de code qui vient de s'ouvrir et enregistrez-le :

    Private Sub Application_Quit()
        Dim objMAPISession As Object
        Set objReminders = Nothing
        If MsgBox("Would you like to turn the Out of Office Assistant on?", vbYesNo, "Activate Out of Office Assistant") = vbYes Then
            Set objMAPISession = CreateObject("MAPI.Session") THIS IS THE STEP THAT FAILS
            objMAPISession.Logon , , True, False
            objMAPISession.OutOfOffice = True
            objMAPISession.Logoff
        End If
        Set objMAPISession = Nothing
    End Sub
  6. Fermez et ouvrez Outlook.

  7. Retournez à la Developer onglet Macros icône. Il vous donnera un message sur les macros. Activez-les.

4voto

scrawny Points 41

Une autre façon de contourner ce problème (car je ne pense pas que vous puissiez modifier les paramètres de date et d'heure de l'assistant d'absence du bureau via VBA) consiste à effectuer les étapes suivantes :

  1. Créez une règle dans "Règles et alertes" pour l'arrivée d'un message et faites en sorte que cette règle réponde automatiquement à tous les e-mails où vous figurez dans la partie "À" de l'e-mail.
  2. Définissez la règle pour répondre en utilisant "demander au serveur de répondre en utilisant un message spécifique".
  3. Remplissez le "message spécifique" avec un modèle de réponse standard (exemple approximatif : Cher client, je suis actuellement au bureau. Les heures de travail sont de 8h à 17h. Je vous répondrai rapidement à mon retour. Je vous prie d'agréer, <-insérer la signature->, mes salutations distinguées. )
  4. Nommez la règle "HomeTime" (ou quelque chose de significatif - cela sera nécessaire pour le code vba ci-dessous).
  5. Modifiez la sécurité de vos macros VBA dans Outlook pour permettre l'exécution des macros de manière appropriée.
  6. Incluez le code suivant qui s'exécute pendant Application_Start y Application_Quit pour activer/désactiver la règle :
Option Explicit

Private Sub Application_Quit()
   SetRuleEnabled True
End Sub

Private Sub Application_Startup()
   SetRuleEnabled False
End Sub

Private Sub SetRuleEnabled(ByVal bEnable As Boolean)
   Dim oSession    As Outlook.NameSpace
   Dim oRule       As Outlook.Rule
   Dim oRules      As Outlook.Rules
   Dim oPA         As Outlook.PropertyAccessor

   Set oSession = Application.Session
   Set oRules = oSession.DefaultStore.GetRules()
   Set oPA = oSession.DefaultStore.PropertyAccessor

   '*** If the Out-Of-Office is already on (eg. holidays, sick leave etc.) 
   '*** then it might be best to force this rule permanently off
   If oPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B") Then
      bEnable = False
   End If

   For Each oRule In oRules
      If oRule.Name = "HomeTime" Then
         oRule.Enabled = bEnable
         oRules.Save
         Exit For
      End If
   Next

End Sub

Il faut garder à l'esprit que cette réponse sera déclenchée à chaque fois pour chaque réponse suivante. Contrairement à l'assistant Out-Of-Office qui ignore les réponses ultérieures.

PS. Avec la vérification d'Out of Office dans le VBA ci-dessus, vous aurez besoin d'une référence à la bibliothèque CDO. Si vous ne voulez pas vérifier si Out-Of-Office est activé, alors vous n'aurez pas besoin de CDO.

2voto

Jaroos Points 21

Génial ! Merci KCotreau. J'ai réussi à le faire fonctionner sur MS Outlook 2003. Voici l'extrait de code - je l'ai juste enveloppé dans le pré et le code pour ne pas tout avoir sur une seule ligne.

Private Sub Application_Quit() 
Dim objMAPISession As Object
Set objReminders = Nothing
If MsgBox("Would you like to turn the Out of Office Assistant on?", vbYesNo, "Activate Out of Office Assistant") = vbYes Then
    Set objMAPISession = CreateObject("MAPI.Session")
    objMAPISession.Logon , , True, False
    objMAPISession.OutOfOffice = True
    objMAPISession.Logoff
End If
Set objMAPISession = Nothing
End Sub

C'est bien, mais est-il possible de le faire fonctionner à une date/heure ultérieure ? Ce serait un vrai plus, car si vous avez prévu de partir en vacances et que vous oubliez d'activer le système OOF, il se déclenchera automatiquement sans intervention humaine... hein ?

1voto

micahg Points 1612

Il semble qu'Outlook génère un événement Application_Quit lors de sa fermeture, qui pourrait être utilisé pour définir l'OOF. En appuyant sur Alt-F11 dans Outlook, l'éditeur de macro apparaît. Commencez à fouiller là-dedans.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X