Outlook VBA: отклонить собрание, отредактировать ответ перед отправкой, а затем сохранить его в календаре как предварительный - PullRequest
0 голосов
/ 11 июня 2019

Используя VBA, я хотел бы упростить текущий процесс, который я использую в Outlook, чтобы отклонять собрания, но сохранять их в своем календаре.Текущий процесс:

  1. Дважды щелкните приглашение на собрание, чтобы открыть его в инспекторе
  2. Нажмите «Отклонить: измените ответ перед отправкой ...»
  3. Введите сообщение председателю собрания о том, почему я не посещаю
  4. Нажмите «Отправить»
  5. Перейдите в папку «Удаленные элементы», найдите приглашение на собрание и откройте его
  6. Нажмите «Предварительно: не отправлять ответ»

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

Ниже приведен упрощенный код, но у него есть две основные проблемы:

  1. Нет "паузы" дляПозвольте мне отредактировать ответ, прежде чем отправить его.Откроется окно инспектора, но код продолжает выполняться.Если то, что я хочу, не представляется возможным, менее предпочтительный вариант - отказаться от этой идеи и вместо этого продолжить самостоятельно выполнять шаги 1-3, но затем иметь макрос, который я выполнил бы вместо нажатия «отправить» на шаге 4.макрос будет делать только шаги 4-6.
  2. Приведенный ниже код отправляет отклонение, а затем помещает предварительное собрание в мой календарь (по желанию), но позже, если я пытаюсь принять это собрание, Outlook жалуется, что «это собрание было перемещено или удалено».У меня нет этой проблемы после 6-шагового ручного процесса, указанного выше.

Код:

    Public Sub DeclineButKeep()

    Dim oAppt As Outlook.AppointmentItem
    Dim oResponse As Outlook.MeetingItem
    Dim oRequest As Outlook.MeetingItem

    Set oRequest = GetCurrentItem

    Set oAppt = oRequest.GetAssociatedAppointment(True)
    Set oResponse = oAppt.Respond(olMeetingDeclined, False, True)
    oResponse.Send

    Set oAppt = oRequest.GetAssociatedAppointment(True)
    Set oResponse = oAppt.Respond(olMeetingTentative, True)

    oRequest.Delete

    Set oAppt = Nothing
    Set oResponse = Nothing
    Set oRequest = Nothing

    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...