Outlook 2010: как автоматически выключить Out of Office при закрытии Outlook?
Можно ли сделать так, чтобы Outlook 2010 включал функцию "Автоматические ответы" при закрытии приложения? Мне нравится включать "Вне офиса" в конце дня, но в спешке это легко забывают.
4 ответа
Я ДЕЙСТВИТЕЛЬНО пытался сделать эту работу для вас, но я узнал, что Outlook 2010 больше не поддерживает CDO 1.2.1, и, не будучи программистом, у меня не было глубоких знаний, чтобы кодировать его по-другому. Хотя Microsoft не поддерживает и не рекомендует (почему они упоминают об этом??), можно установить CDO, если у вас есть Outlook 2007, до того, как вы обновитесь до Outlook 2010.
http://support.microsoft.com/kb/2028411
Я собираюсь опубликовать, как сделать это в Outlook 2003/2007 на случай, если кто-нибудь случится с этим. Я только что проверил это. Я также опубликую другие шаги для Outlook 2010, при условии, что вы можете исправить код.
Для Outlook 2003/2007
Только для Outlook 2007 необходимо установить CDO, иначе код не будет выполнен: http://www.microsoft.com/downloads/en/details.aspx?familyid=2714320d-c997-4de1-986f-24f081725d36&displaylang=en
Предполагая, что групповая политика вашей компании не отменяет это, измените безопасность в
Tools
→Macros
→Security
вNo Security Check for macros
,Идти к
Tools
→Macros
→Visual Basic Editor
,Нажмите на значок Visual Basic и нажмите F2, чтобы открыть браузер объектов.
В новом проекте на левой панели разверните его, пока не увидите
ThisOutlookSession
и дважды щелкните по нему.Вырежьте и вставьте следующий код в открывшееся окно кода и сохраните его:
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
Закройте и откройте Outlook.
Это даст вам сообщение о макросах. Включить их.
Для Outlook 2010
Если вы можете исправить код, вот шаги для Outlook 2010. Я включил их, потому что расположение многих элементов изменилось, и может быть трудно найти. В текущем коде я также указываю на шаг, который терпит неудачу.
Предполагая, что групповая политика вашей компании не отменяет это, измените безопасность в
File
→Options
→Trust Center
→Trust Center Settings
→Macro Settings
вEnable all macros
,Начните с включения
Developer
вкладка вFile
→Options
→Customize Ribbon
, проверятьDeveloper
в правом столбце.Нажмите на значок Visual Basic и нажмите F2, чтобы открыть браузер объектов.
Идти к
Classes
(левый столбец) →ThisOutlookSession
и дважды щелкните по нему.Вырежьте и вставьте следующий код в открывшееся окно кода и сохраните его:
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
Закройте и откройте Outlook.
Вернуться к
Developer
вкладка →Macros
значок. Это даст вам сообщение о макросах. Включить их.
Другой способ обойти это (поскольку я не верю, что вы можете изменить параметры даты / времени для Out Of Office Assistant через VBA) - это выполнить следующие шаги:
- Создайте правило в "Правилах и оповещениях" для того, когда приходит сообщение, и пусть это правило автоматически отвечает на каждое электронное письмо, где вы находитесь в части "Кому".
- Установите правило для ответа, используя "иметь ответ сервера, используя определенное сообщение"
- Заполните "конкретное сообщение" стандартным шаблоном ответа (примерный пример: Уважаемый почтовый клиент, я в данный момент нахожусь в офисе. Рабочие часы с 8:00 до 17:00. Я отвечу незамедлительно по возвращении. С уважением, <-insert signature->)
- Назовите правило "HomeTime" (или что-то значимое - это понадобится для кода VBA ниже)
- Измените безопасность макросов VBA в Outlook, чтобы обеспечить надлежащее выполнение макросов
- Включите следующий код, который выполняется во время
Application_Start
а такжеApplication_Quit
включить / отключить правило:
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
Следует помнить, что этот ответ будет запускаться каждый раз при каждом последующем ответе. В отличие от помощника по отсутствию на рабочем месте, который игнорирует последующие ответы.
PS. С проверкой Out of Office в VBA выше, вам понадобится ссылка на библиотеку CDO. Если вы не хотите проверять наличие Out-Of-Office, вам не понадобится CDO.
Потрясающие! Спасибо Котро. Я установил его на MS Outlook 2003. Ниже приведен фрагмент кода - я просто обернул его в pre и код, чтобы все не было в одной строке.
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
Это хорошо, но возможно ли запустить его в будущем дне / времени? Это будет реальным плюсом, потому что если у вас запланирован отпуск и вы забыли выключить, он автоматически включится без вмешательства человека... а?
Похоже, что Outlook генерирует событие Application_Quit при закрытии, которое можно подключить для установки OOF. Нажатие Alt-F11 в Outlook вызывает редактор макросов. Начни там ковыряться.