VBA Outlook加载项中的选项

时间:2011-10-10 11:16:00

标签: vba outlook outlook-vba

我被要求实施一个解决方案,员工必须为新电子邮件指定安全级别(这些电子邮件由交换服务器过滤)。我想要做的就是拥有它,所以当发送新电子邮件时,会出现一个对话框,其中包含安全级别的选项,即PERSONALUNCLASSIFIEDCLASSIFIED等,然后附加到主题行[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 :(得分:0)

根据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并从用户表单中选择一些内容。