Могу ли я получить доступ к полю контактов электронной почты Outlook в VBA?

Я хотел бы получить доступ к полю контактов в сообщении электронной почты (параметры электронной почты) в Outlook. Обычно это поле связывает электронную почту с контактом. Поскольку это текстовое поле произвольной формы, доступное в диалоговом окне параметров, я пытаюсь использовать его для сохранения «следующего действия» для моего сообщения электронной почты. Я хотел бы установить следующее действие в зависимости от темы, но не могу понять, как получить доступ к этому полю из объекта outlook.mailitem.

Спасибо Джим

14.12.2008 17:23:48
Просто чтобы уточнить - я предполагаю, что вы пытаетесь получить доступ к фактическому полю «Контакты», которое будет отображаться при разработке формы, а не к полю «Кому», например? Можете ли вы привести пример того, чего вы пытаетесь достичь, просто чтобы добавить немного больше контекста к вашему вопросу?
Phil.Wheeler 14.12.2008 22:51:53
Не уверен, как поле «Контакты» относится к «действиям» в вашем сценарии использования, но тем не менее интересный вопрос. Я также не мог понять, как это поле доступно до сих пор.
Oliver Giesen 19.12.2008 08:49:24
3 ОТВЕТА

Хм, я также не мог понять, как получить доступ к полю «Контакты», но из вашего описания это звучит так, как будто вы вообще не собираетесь использовать его по прямому назначению, а просто хотите связать некоторые произвольные строковые данные с электронная почта Если это правильно, я бы рекомендовал добавить поля в UserPropertiesколлекцию.

0
19.12.2008 08:52:57

Я думаю, что это ответит на это: поле похоронено в полуобобщенном свойстве Links, с типом olContact. Чтобы проверить следующий код, откройте новое электронное письмо, поместите что-нибудь в поле контактов и запустите код:

Sub ShowContactsField()
  Dim objApp As Outlook.Application
  Dim ActiveMailItem As Inspector
  Dim currLink As Link

Set objApp = CreateObject("Outlook.Application") If TypeName(objApp.ActiveWindow) = "Inspector" Then If objApp.ActiveInspector.CurrentItem.Class = olMail Then For Each currLink In objApp.ActiveInspector.CurrentItem.Links If currLink.Type = olContact Then MsgBox currLink.Name End If Next End If End If Set objApp = Nothing End Sub

В общем, я согласен с Оливером; это, вероятно, не лучшее место для хранения того, что вы ищете, но, по крайней мере, оно представлено в естественной форме. Проверьте длину поля, я думаю, она может быть ограничена 255.

1
17.01.2009 19:23:50

Есть более простой способ получить список контактов - используя свойство Links объекта oMailItem:

    For i = 1 To mailItem.Links.Count
        If mailItem.Links.item(i).Type = olContact Then
                Debug.Print mailItem.Links.item(i).Name
        End If
Next i
0
14.07.2009 20:17:39