Сама ошибка означает, что свойство .To
недопустимо для Item
при отправке приглашения.
Это потому, что при отправке приглашения Object
, используемый для Item
, равен olAppointmentItem
(что отличается от olMailItem
, используемого при отправке электронного письма).
Если вы все еще хотите проверить получателей приглашения, вам следует использовать свойство .Recipients
вместо .To
.
В любом случае вы можете защитить свой код, проверив тип Item
во время выполнения:
If TypeName(Item) = "your desired type" Then
'your code to check the recipients here
End If
Если у вас разные коды в зависимости от типа Item
, вы можете использовать переключатель:
Select Case TypeName(Item)
Case "Outlook.MailItem":
'check .To
Case "Outlook.AppointmentItem":
'check .Recipients
'etc.
End Select
Чтобы получить точные типы, я предлагаю вам установить точку останова в вашем коде, а затем использовать непосредственное окно для печати Debug.Print TypeName(Item)
поверх ваших различных вариантов использования. Обратите внимание, что с решением Select
вы также можете использовать оператор Case Else
(где вы попадете, если встретится какой-либо из предыдущих Case
), где вы просто вызовете «необработанное исключение» или что бы вы ни делали как делать, когда вы не знаете, как обращаться с указанным типом объекта.