Outlook 2010: Jak automatycznie wyłączyć się z pakietu Office po zamknięciu programu Outlook?

4

Czy jest możliwe, aby program Outlook 2010 włączał funkcję „Automatycznych odpowiedzi” po zamknięciu aplikacji? Lubię włączyć „Poza biurem” pod koniec dnia, ale w pośpiechu łatwo o tym zapomnieć.

Mikael Koskinen
źródło

Odpowiedzi:

5

NAPRAWDĘ próbowałem sprawić, aby ta funkcja działała dla Ciebie, ale dowiedziałem się, że Outlook 2010 nie obsługuje już CDO 1.2.1 i nie będąc programistą, nie miałem głębokiej wiedzy, aby napisać to w inny sposób. Chociaż nie jest obsługiwany i nie jest zalecany przez Microsoft (dlaczego więc o tym wspominają?), Możliwe jest zainstalowanie CDO, jeśli masz program Outlook 2007, przed uaktualnieniem do programu Outlook 2010.

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

Zamierzam opublikować, jak to zrobić w programie Outlook 2003/2007 na wypadek, gdyby ktokolwiek się na to natknął. Właśnie to przetestowałem. Zamieszczę również inne kroki dotyczące programu Outlook 2010, zakładając, że można naprawić kod.

Dla programu Outlook 2003/2007

  1. Tylko dla programu Outlook 2007, musisz zainstalować CDO, inaczej kod się nie powiedzie: http://www.microsoft.com/downloads/en/details.aspx?familyid=2714320d-c997-4de1-986f-24f081725d36&displaylang=en

  2. Zakładając, że zasady grupy Twojej firmy nie zastępują tego, zmień zabezpieczenia w ToolsMacrosSecurityna No Security Check for macros.

  3. Idź do ToolsMacrosVisual Basic Editor.

  4. Kliknij ikonę Visual Basic i naciśnij, F2aby otworzyć przeglądarkę obiektów.

  5. W nowym projekcie w lewym okienku rozwiń go, aż zobaczysz ThisOutlookSessioni kliknij dwukrotnie.

  6. Wytnij i wklej następujący kod w oknie kodu, które właśnie otworzyło, i zapisz go:

    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. Zamknij i otwórz Outlook.

  8. Otrzymasz wiadomość o makrach. Włącz je.

Dla programu Outlook 2010

Jeśli możesz naprawić kod , oto kroki dla programu Outlook 2010. Dołączam je, ponieważ zmieniło się położenie wielu elementów i może być trudne do znalezienia. W obecnym kodzie wskazuję również krok, który się nie powiedzie.

  1. Zakładając, że zasady grupy Twojej firmy nie zastępują tego, zmień zabezpieczenia w FileOptionsTrust CenterTrust Center SettingsMacro Settingsna Enable all macros.

  2. Zacznij od włączenia Developerkarty w FileOptionsCustomize Ribbon, sprawdź Developerw prawej kolumnie.

  3. Kliknij ikonę Visual Basic i naciśnij F2, aby otworzyć przeglądarkę obiektów.

  4. Przejdź do Classes(lewa kolumna) → ThisOutlookSessioni kliknij dwukrotnie.

  5. Wytnij i wklej następujący kod w oknie kodu, które właśnie otworzyło, i zapisz go:

    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. Zamknij i otwórz Outlook.

  7. Wróć do Developerzakładki → Macrosikona. Otrzymasz wiadomość o makrach. Włącz je.

KCotreau
źródło
4

Innym sposobem na obejście tego (ponieważ nie sądzę, że można zmienić parametry daty / godziny dla Asystenta podczas nieobecności za pośrednictwem VBA) jest wykonanie następujących kroków:

  1. Utwórz regułę w „Regułach i alertach” na wypadek, gdy wiadomość dotrze, i niech ta reguła automatycznie odpowie na każdy e-mail, w którym jesteś w części „Do”.
  2. Ustaw regułę tak, aby odpowiadała za pomocą „odpowiedz serwerowi za pomocą określonej wiadomości”
  3. Wypełnij „konkretną wiadomość” standardową odpowiedzią na szablon (szorstki przykład: Drogi e-mailu, jestem obecnie w biurze. Godziny pracy to od 8:00 do 17:00. Odpowiem natychmiast po powrocie. Z poważaniem <-wstaw podpis-> )
  4. Nazwij regułę „HomeTime” (lub coś znaczącego - będzie to konieczne w przypadku kodu VBA poniżej)
  5. Zmień zabezpieczenia makr VBA w programie Outlook, aby odpowiednio uruchamiać makra
  6. Dołącz następujący kod, który działa podczas Application_Starti Application_Quitaby włączyć / wyłączyć regułę:
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

Należy pamiętać, że ta odpowiedź będzie wyzwalana za każdym razem dla każdej kolejnej odpowiedzi. W przeciwieństwie do asystenta Poza biurem, który ignoruje kolejne odpowiedzi.

PS. Po sprawdzeniu nieobecności w VBA powyżej będziesz potrzebować odniesienia do biblioteki CDO. Jeśli nie chcesz sprawdzać, czy jest poza biurem, nie będziesz potrzebować CDO.

chudy
źródło
2

Niesamowite! Dzięki KCotreau. Mam go działającego na MS Outlook 2003. Poniżej znajduje się fragment kodu - właśnie go owinąłem w pre i kod, aby nie mieć tego wszystkiego w jednym wierszu.

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

To miłe, ale czy możliwe jest uruchomienie go w przyszłości? To będzie prawdziwy plus, ponieważ jeśli masz zaplanowane wakacje i zapomnisz zmienić OOF, automatycznie rozpocznie się bez interwencji człowieka ... co?

Jaroos
źródło
1

Wygląda na to, że Outlook podczas zamykania generuje zdarzenie Application_Quit, które można zaczepić w celu ustawienia OOF. Naciśnięcie Alt-F11 w Outlooku wywołuje edytor makr. Zacznij się tam grzebać.

uSlackr
źródło