Можно ли сделать так, чтобы 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 утра до 5 вечера. Я отвечу быстро по моему возвращению. С уважением, <-insert подпись->)
- Назовите правило "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.
Похоже, Outlook генерирует событие Application_Quit при закрытии, которое может быть подключено для установки OOF. Нажатие Alt-F11 в Outlook вызывает редактор макросов. Начни там ковыряться.
Потрясающие! Спасибо Котро. Я получил это работает на MS Outlook 2003. Ниже приведен фрагмент кода - я просто обернул его вместе с пре и кодом, чтобы все не было в одной строке.
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
Это хорошо, но возможно ли запустить его в будущем дне / времени? Это будет реальным плюсом, потому что если у вас запланирован отпуск и вы забыли выключить питание, он автоматически включится без вмешательства человека ... а?