2011-10-10 25 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並從用戶窗體中選擇一些東西。