Outlook 2013 VBA с автоматическим отклонением приглашения на собрание, ошибка во время выполнения 91: переменная объекта или переменная блока не задана - PullRequest
0 голосов
/ 16 мая 2019

Я нашел код для автоматического отклонения приглашения на собрание в нескольких местах. Однако при запуске его в моем Outlook 2013 в качестве действия для правила он останавливается на строке, предназначенной для отбрасывания, вместо отправки ответа. Организатору встречи не нужен ответ от всех в организации. Как и в групповом календаре, он мне не нужен, потому что это не встречи, в которые я вступаю.

Что вызывает эту ошибку и как я могу лучше всего решить эту проблему?

Правило Outlook прерывает сценарий и выпрыгивает, хотя у меня есть пара дополнительных действий (пометить его как прочитанное и удалить его), когда он сталкивается с ошибкой во время выполнения. Это приводит к тому, что приглашение остается в моей папке «Входящие», и я не знаю, что со спамом организатор. Я создал временный макрос для тестирования, который принимает текущее выбранное приглашение на собрание в Outlook и передает его в сценарий AutoDecline. Вот как я получаю ошибку, чтобы фактически показать себя.

Sub AutoDeclineMeetings(oRequest As MeetingItem)

If oRequest.MessageClass <> "IPM.Schedule.Meeting.Request" Then
    Exit Sub
End If

Dim oAppt As AppointmentItem
Set oAppt = oRequest.GetAssociatedAppointment(False)

Dim oResponse
    Set oResponse = oAppt.Respond(olMeetingDeclined, True)
    oResponse.Close (olDiscard)

'These actions I added for my rule to discard the invite from the inbox.
oRequest.UnRead = False
oRequest.Delete

End Sub


Sub TestMacro()

Dim TestItem As MeetingItem
Set TestItem = ActiveExplorer.Selection.Item(1)
Call AutoDeclineMeetings(TestItem)

End Sub

В строке oResponse.Close (olDiscard) Я получаю сообщение об ошибке 91: переменная объекта или переменная блока не установлены. Я ожидаю, что ответ «Отклонить» будет отброшен, а не отправлен отправителю собрания, поэтому я не буду спамить его. Его не нужно принимать всем в списке рассылки организации, в который оно было отправлено.

1 Ответ

0 голосов
/ 11 июня 2019

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

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

У меня есть похожие макросы, и я просто ничего не делаю, если ответ не запрашивается.Например:

Set oResponse = oAppt.Respond(olMeetingDeclined, True)
If oAppt.ResponseRequested Then
    oResponse.Send
End If

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