3

Можно ли сделать так, чтобы Outlook 2010 включал функцию "Автоматические ответы" при закрытии приложения? Мне нравится включать "Вне офиса" в конце дня, но в спешке это легко забывают.

4 ответа4

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

  1. Только для Outlook 2007 необходимо установить CDO, иначе код не будет выполнен: http://www.microsoft.com/downloads/en/details.aspx?familyid=2714320d-c997-4de1-986f-24f081725d36&displaylang=en

  2. Предполагая, что групповая политика вашей компании не переопределяет это, измените защиту в « Tools → « Macros → « Security на « No Security Check for macros .

  3. Перейдите в ToolsMacrosVisual Basic Editor .

  4. Нажмите на значок Visual Basic и нажмите F2, чтобы открыть браузер объектов.

  5. В новом проекте на левой панели разверните его, пока не увидите ThisOutlookSession и дважды щелкните по нему.

  6. Вырежьте и вставьте следующий код в открывшееся окно кода и сохраните его:

    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. Закройте и откройте Outlook.

  8. Это даст вам сообщение о макросах. Включить их.

Для Outlook 2010

Если вы можете исправить код, вот шаги для Outlook 2010. Я включил их, потому что расположение многих предметов изменилось, и их может быть трудно найти. В текущем коде я также указываю на шаг, который терпит неудачу.

  1. Предполагая, что групповая политика вашей компании не переопределяет это, измените защиту в FileOptions → Центр управления безопасностью → Настройки Trust CenterTrust Center Settings Macro Settings чтобы Enable all macros .

  2. Начните с включения вкладки « Developer » в меню « File → « Options → « Customize Ribbon , выберите « Developer в правом столбце.

  3. Нажмите на значок Visual Basic и нажмите F2, чтобы открыть браузер объектов.

  4. Перейдите в Classes (левый столбец) → ThisOutlookSession и дважды щелкните его.

  5. Вырежьте и вставьте следующий код в открывшееся окно кода и сохраните его:

    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. Закройте и откройте Outlook.

  7. Вернитесь на вкладку Developer → Значок Macros . Это даст вам сообщение о макросах. Включить их.

3

Другой способ обойти это (поскольку я не верю, что вы можете изменить параметры даты / времени для Out Of Office Assistant через VBA) - выполнить следующие шаги:

  1. Создайте правило в "Правилах и оповещениях" для того, когда приходит сообщение, и пусть это правило автоматически отвечает на каждое электронное письмо, где вы находитесь в части "Кому".
  2. Установите правило для ответа, используя «иметь ответ сервера, используя определенное сообщение»
  3. Заполните "конкретное сообщение" стандартным шаблоном ответа (пример грубый: Уважаемый почтовик, я сейчас нахожусь в офисе.Рабочее время с 8 утра до 5 вечера. Я отвечу быстро по моему возвращению. С уважением, <-insert подпись->)
  4. Назовите правило "HomeTime" (или что-то значимое - это понадобится для кода VBA ниже)
  5. Измените безопасность макросов VBA в Outlook, чтобы правильно запустить запуск макросов
  6. Включите следующий код, который выполняется во время 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.

1

Похоже, Outlook генерирует событие Application_Quit при закрытии, которое может быть подключено для установки OOF. Нажатие Alt-F11 в Outlook вызывает редактор макросов. Начни там ковыряться.

1

Потрясающие! Спасибо Котро. Я получил это работает на 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

Это хорошо, но возможно ли запустить его в будущем дне / времени? Это будет реальным плюсом, потому что если у вас запланирован отпуск и вы забыли выключить питание, он автоматически включится без вмешательства человека ... а?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .