Параметры в надстройке VBA Outlook - PullRequest
1 голос
/ 10 октября 2011

Меня попросили внедрить решение, согласно которому сотрудники должны назначать уровень безопасности для новых писем (они фильтруются сервером обмена).Я хочу сделать так, чтобы при отправке нового письма появлялось диалоговое окно с параметрами уровня безопасности, например PERSONAL, UNCLASSIFIED, CLASSIFIED и т. Д., А затем добавлялось в конец темы.линия [SEC=variable].На данный момент у меня есть код ниже, однако это явно необходимо изменить вручную, и я не хочу, чтобы сотрудники делали это (а они не будут).

Public Class ThisAddIn

Private WithEvents inspectors As Outlook.Inspectors

Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
    inspectors = Me.Application.Inspectors
End Sub

Private Sub inspectors_NewInspector(ByVal Inspector As Microsoft.Office.Interop.Outlook.Inspector) Handles inspectors.NewInspector
    Dim mailItem As Outlook.MailItem = TryCast(inspector.CurrentItem, Outlook.MailItem)
    If Not (mailItem Is Nothing) Then
        If mailItem.EntryID Is Nothing Then
            mailItem.Subject = "[SEC=UNCLASSIFIED]"
        End If
    End If
End Sub

Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown

End Sub
End Class

Любая помощь, чтобы получитьЭто диалоговое окно будет с благодарностью.Я использую Visual Studio 2010 с Outlook 2010.

1 Ответ

0 голосов
/ 24 июля 2012

Как предложено Gaffi , используйте событие ItemSend, чтобы отобразить пользовательскую форму, где ваши пользователи могут выбрать опцию отправки.Боюсь, я не знаю, как это сделать в Visual Studio, только в VBA.Надеюсь, вы сможете перевести этот код.

Я создал образец пользовательской формы с переключателями, чтобы можно было выбрать только одну опцию.

sample userform

Единственный код формывыгрузить форму:

Private Sub CommandButton1_Click()
  Unload Me
End Sub

В модуле ThisOutlookSession (встроенный модуль класса для Outlook) следующий код создает форму при отправке электронного письма, прося отправителя классифицировать электронную почту:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

  Dim frm As UserForm1
  Dim chosenvalue As String

  Set frm = New UserForm1

  frm.Show vbModal

  Select Case True
  Case frm.OptionButton1.Value
    chosenvalue = "PERSONAL"
  Case frm.OptionButton2.Value
    chosenvalue = "UNCLASSIFIED"
  Case frm.OptionButton3.Value
    chosenvalue = "CLASSIFIED"
  Case Else  ' no value chosen
    MsgBox "you did not select a value. cancelling send."
    Cancel = True
    Exit Sub
  End Select

  If TypeName(Item) = "MailItem" Then
    Item.Subject = Item.Subject & " [SEC=" & chosenvalue & "]"
  End If

End Sub

Поскольку мы создаем форму вне модуля класса, мы можем прочитать, какой переключатель был выбран, даже после закрытия формы.В зависимости от выбора предмет изменяется.Если выбор не сделан, событие ItemSent отменяется, и пользователь вынужден снова нажать Send и выбрать что-то в пользовательской форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...