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ć.
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ć.
Odpowiedzi:
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.
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
Zakładając, że zasady grupy Twojej firmy nie zastępują tego, zmień zabezpieczenia w Tools
→ Macros
→ Security
na No Security Check for macros
.
Idź do Tools
→ Macros
→ Visual Basic Editor
.
Kliknij ikonę Visual Basic i naciśnij, F2aby otworzyć przeglądarkę obiektów.
W nowym projekcie w lewym okienku rozwiń go, aż zobaczysz ThisOutlookSession
i kliknij dwukrotnie.
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
Zamknij i otwórz Outlook.
Otrzymasz wiadomość o makrach. Włącz je.
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.
Zakładając, że zasady grupy Twojej firmy nie zastępują tego, zmień zabezpieczenia w File
→ Options
→ Trust Center
→ Trust Center Settings
→ Macro Settings
na Enable all macros
.
Zacznij od włączenia Developer
karty w File
→ Options
→ Customize Ribbon
, sprawdź Developer
w prawej kolumnie.
Kliknij ikonę Visual Basic i naciśnij F2, aby otworzyć przeglądarkę obiektów.
Przejdź do Classes
(lewa kolumna) → ThisOutlookSession
i kliknij dwukrotnie.
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
Zamknij i otwórz Outlook.
Wróć do Developer
zakładki → Macros
ikona. Otrzymasz wiadomość o makrach. Włącz je.
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:
Application_Start
i Application_Quit
aby 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.
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?