@denismix

Как в Outlook сделать Комментарии к письмам через форму созданную в VBA?

На самом деле как создать комментарий и приаттачить его к каждому письму, создав пользовательское поле подробно описано например тут http://evo.engineering/быстро-добавляем-комментари...

Но, прочитать этот коммент весьма затруднительно, если он достаточно длинный.
Возникает мысль сделать макрос со встроенной формой, которая будет считывать комментарий из пользовательского поля "Комментарий" и показывать его в TextBox.
Т.е. написав код под спойлером, мы при активации макроса можем легко отобразить содержание пользовательского поля "Комментарий" из текущего заселектованного письма в TextBox UserForm:
spoiler
Private Sub UserForm_Activate()
Dim myItem As Object

 'Инициализируем текущее выбранное сообщение
 Set myItem = Outlook.Application.ActiveExplorer.Selection(1)
 On Error Resume Next

 TextBox1.Value = myItem.UserProperties.Add("Комментарий", olText, True).Value
End Sub

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

Вопрос.
Какое событие нужно использовать, чтобы считывать очередной коммент в UserForm при новом выборе письма, причем хоть мышкой, хоть стрелками?
  • Вопрос задан
  • 534 просмотра
Пригласить эксперта
Ответы на вопрос 1
@denismix Автор вопроса
Нашел ответ:
Добавляем в раздел Проекта VBA "Microsoft Outlook Objects / ThisOutlookSession" процедуру завязанную на событие Application_ItemLoad.
Подразумевается, что пользовательское поле "Комментарий" уже добавлено к полям сообщений вручную.
Не забываем отловить возникающие при запуске Outlook ошибки, которые возникают в связи с тем, что скрипт уже работает, а ActiveExplorer еще не запустился и выбранного сообщения еще нет.
Код срабатывает только когда текст письма загрузился для просмотра в компактном представлении (а это происходит каждый раз, когда вы выбираете очередное письмо) , поэтому систему и процессор не нагружает.

Private Sub Application_ItemLoad(ByVal Item As Object)
Dim myItem As Object
 
 On Error Resume Next

 Set myItem = Outlook.Application.ActiveExplorer.Selection(1)
 If UserForm1.Visible Then
  UserForm1.TextBox1.Value = myItem.UserProperties.Add("Комментарий", olText, True).Value
 End If
 
 Err.Clear
 
End Sub
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы