Используя VBA, я хотел бы упростить текущий процесс, который я использую в Outlook, чтобы отклонять собрания, но сохранять их в своем календаре.Текущий процесс:
- Дважды щелкните приглашение на собрание, чтобы открыть его в инспекторе
- Нажмите «Отклонить: измените ответ перед отправкой ...»
- Введите сообщение председателю собрания о том, почему я не посещаю
- Нажмите «Отправить»
- Перейдите в папку «Удаленные элементы», найдите приглашение на собрание и откройте его
- Нажмите «Предварительно: не отправлять ответ»
Все обнаруженные мной примеры VBA используют VBA для создания копии собрания.Это разрывает связь с исходной встречей, что означает, что она не обновляется, и я не могу принять ее в более поздний момент времени.Я хочу выполнить точные шаги, перечисленные выше, чтобы сохранить связь.
Ниже приведен упрощенный код, но у него есть две основные проблемы:
- Нет "паузы" дляПозвольте мне отредактировать ответ, прежде чем отправить его.Откроется окно инспектора, но код продолжает выполняться.Если то, что я хочу, не представляется возможным, менее предпочтительный вариант - отказаться от этой идеи и вместо этого продолжить самостоятельно выполнять шаги 1-3, но затем иметь макрос, который я выполнил бы вместо нажатия «отправить» на шаге 4.макрос будет делать только шаги 4-6.
- Приведенный ниже код отправляет отклонение, а затем помещает предварительное собрание в мой календарь (по желанию), но позже, если я пытаюсь принять это собрание, 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