Доступ к пользовательским полям в Outlook

Итак, у меня есть настраиваемая форма/сообщение электронной почты, как показано ниже, и я хочу получить доступ к значению поля «Заголовок документа:», чтобы вставить его в тело электронного письма.

В настоящее время у меня есть этот код;

Function Item_Send()
    Item.Body = Item.Body + UserProperties.Find("TextBox1").Text
End Function

И я пробовал несколько вариантов этого, например Item.UserProperties.Find(...).Value, Find(...).Value сам по себе, UserProperties.Find("TextBox1", false).Text и т. д.

Исследования;
CodeProject
Документация по методу поиска MSDN
Поддержка Майкрософт: создание формы сообщения электронной почты
Поддержка Майкрософт: часто задаваемые вопросы о настраиваемых формах Outlook
Поддержка Microsoft — Работа с пользовательскими полями

Я просто не могу найти решение.
Опубликованный код возвращает Object requred: 'UserProperties.Find(...)'
Если я добавлю false к параметрам, которые я получаю; Object doesn't support this property of method: 'UserProperties.Find'
Поиск сам по себе дает мне Type mismatch: 'Find'

И это все сообщения об ошибках, которые я могу получить. Любая помощь будет принята с благодарностью. (Я использую кнопку редактора сценариев для написания приведенного выше кода, а не кнопку Visual Basic).

введите здесь описание изображения


person Trent    schedule 17.05.2013    source источник


Ответы (1)


Измените проблемную строку на

set prop = Item.UserProperties.Find("TextBox1")
if Not (prop Is Nothing) Then
  Item.Body = Item.Body + prop.Value
End If

Также убедитесь, что имя свойства действительно «TextBox1», что звучит как имя элемента управления. Посмотрите на элемент с помощью OutlookSpy: нажмите кнопку Item, выберите свойство UserProperties, нажмите просмотрите, перейдите на вкладку IEnumVariant, дважды щелкните свойство.

Вы также можете нажать кнопку IMessage, чтобы увидеть необработанные свойства MAPI.

person Dmitry Streblechenko    schedule 17.05.2013
comment
Ну да... Я пытаюсь получить доступ к значению, которое пользователь вводит в элемент управления... все, что я просмотрел, похоже, указывает на метод UserProperties.Find()... - person Trent; 20.05.2013
comment
Типа... Рекомендуется Outlook Этот элемент содержит активное содержимое, которое нельзя отобразить в области чтения. Откройте элемент, чтобы прочитать его содержимое. Если я открою его, я увижу форму со значением, но было бы предпочтительнее, чтобы она открывалась в окне предварительного просмотра, как обычное электронное письмо, если это возможно? - person Trent; 21.05.2013
comment
Это кастомная форма со скриптом? - person Dmitry Streblechenko; 21.05.2013
comment
Что-то вроде? Я перехожу на вкладку «Разработчик», выбираю «Создать форму», а затем выбираю тот, который говорит «Сообщение». Затем я помещаю настраиваемые поля и сценарий выше в открывшуюся форму сообщения. - person Trent; 22.05.2013
comment
Вы можете либо избавиться от скрипта и вместо этого использовать область формы (Microsoft некоторое время пыталась отказаться от пользовательских форм), либо вы можете попробовать обновить специальное именованное свойство, называемое SideEffects (имя DASL schemas.microsoft.com/mapi/id{00062008-0000-0000-C000-000000000046}/85100003) и удалите Бит seHasScript (= 0x2000) — просмотрите существующее сообщение с помощью OutlookSpy (нажмите кнопку IMessage), чтобы увидеть его. Я не знаю, позволит ли MailItem.PropertyAccessor обновить это свойство: OOM очень требователен к некоторым специальным свойствам. Возможно, вам придется использовать Redemption для его обновления. - person Dmitry Streblechenko; 22.05.2013