Item.To извлечение из Outlook olMail-Item на ItemLoad VBA-Event - PullRequest
3 голосов
/ 27 июля 2011

Я пытаюсь получить доступ к строке .To из Outlook-Mail, на который я нажал в Outlook.

В частности, я хочу проверить, была ли почта отправлена ​​на конкретное письмо.

Более широкое представление:
Допустим, я нажимаю на почту, и моя подпрограмма обнаружила, что письмо было отправлено на этот конкретный адрес электронной почты (поле Item.To).В этом случае, если пользователи решат ответить на это сообщение (reply-event), поле CC ответного письма должно автоматически содержать другой адрес электронной почты, на который будет отправлено письмо.

Что я получилпока и не работает:

Private Sub Application_ItemLoad(ByVal Item As Object)
    MsgBox "To: " & Item.To
End Sub

Ошибка: значения и методы элемента не могут быть обработаны в этом событии.

Возможно, мне нужно как-то привести объект для объявленияэто как mailitem-объект для доступа к полю .To?Или какие-либо другие предложения, которые могут работать?

Ответы [ 2 ]

1 голос
/ 20 марта 2014

Событие Application ItemLoad происходит, когда Элемент не был полностью инициализирован. Полезно подключить другое событие элемента, такое как Open, Read (возможно, то, что вам нужно) и т. Д. Мы выполним необходимое событие с помощью приведенного ниже кода в классе ThisOutlookSession:

Public WithEvents myItem As Outlook.mailItem

Private Sub Application_ItemLoad(ByVal Item As Object)
    If (TypeOf Item Is mailItem) Then
        Set myItem = Item
    End If
End Sub

Private Sub myItem_Read()
 ...
End Sub

Ура! * * 1004

0 голосов
/ 12 августа 2011

Application_ItemLoad был представлен в Outlook 2007, поэтому я предполагаю, что это ваша версия.

Я не могу проверить это, но оно должно работать:

Sub CheckRecips()

Dim msg As Outlook.mailItem
Dim msgRecips As Outlook.Recipients
Dim msgRecip As Outlook.Recipient
Dim msgReply As Outlook.mailItem
Dim found As Boolean
Dim replyRecip As Outlook.Recipient

If TypeName(Outlook.ActiveExplorer.Selection(1)) = "MailItem" Then
  Set msg = Outlook.ActiveExplorer.Selection(1)
  Set msgRecips = msg.Recipients

  For Each msgRecip In msgRecips
    If msgRecip.Type = olTo And msgRecip.Address = "email address you're looking for" Then
      ' we found it, exit loop
      found = True
      Exit For
    End If
  Next msgRecip

    ' create reply
  Set msgReply = msg.Reply

  ' if email address was on recipient list, CC someone else on reply
  If found Then
      Set replyRecip = msgReply.Recipients.Add("someone else who should be CC'd")
      replyRecip.Type = olCC
  End If

  msgReply.Display
End If

End Sub

Заменить "адрес электронной почты, который вы ищете"с адресом электронной почты" конкретного "человека, который, возможно, получил письмо.

Замените " кого-то другого, кто должен быть CC'd " на адрес электронной почты человека, которого вы хотите отправить в CC, когда этот конкретный человек получит сообщение.

Назначьте это кнопке панели инструментов и используйте ее, когда вам нужно.

...