VBA Outlook插件中的选项
问题描述:
我被要求实施一种解决方案,即工作人员必须为新电子邮件指定安全级别(这些由交换服务器过滤)。我想要做的是在发送新邮件时,会出现一个对话框,其中包含安全级别的选项,即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.
答
由于建议使用Gaffi,因此请使用ItemSend
事件来显示用户可以在其中选择发送选项的用户窗体。恐怕我不知道如何在Visual Studio中做到这一点,只有在VBA中。希望你可以翻译这段代码。
我创建了一个带单选按钮的示例用户窗体,因此只能选择一个选项。
形式背后的唯一代码是卸载形式:
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
并从用户窗体中选择一些东西。
对于初学者,您可以创建一个用户窗体,在用包含这些值的组合框发送时加载/显示。在该对话框关闭时,如果选择了一个选项,将其附加到主题中('mailItem.Subject = mailItem.Subject&“[SEC = UNCLASSIFIED]”)。 – Gaffi