2011-10-10 89 views
1

我被要求实施一种解决方案,即工作人员必须为新电子邮件指定安全级别(这些由交换服务器过滤)。我想要做的是在发送新邮件时,会出现一个对话框,其中包含安全级别的选项,即PERSONAL,UNCLASSIFIED,CLASSIFIED等,然后附加到主题行[SEC=variable]的后面。目前我有下面的代码,但是这显然必须手动修改,我不希望工作人员必须这样做(他们不会)。VBA Outlook插件中的选项

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.

+0

对于初学者,您可以创建一个用户窗体,在用包含这些值的组合框发送时加载/显示。在该对话框关闭时,如果选择了一个选项,将其附加到主题中('mailItem.Subject = mailItem.Subject&“[SEC = UNCLASSIFIED]”)。 – Gaffi

回答

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 

,我们可以读到RA即使在表单关闭后也选择了dio按钮。根据选择,主题被修改。如果没有选择,ItemSent事件被取消,用户被迫再次击中Send并从用户窗体中选择一些东西。