VBA Outlook加载项中的选项

VBA Outlook加载项中的选项,vba,outlook,Vba,Outlook,我被要求实施一个解决方案,员工必须为新电子邮件指定一个安全级别(这些邮件由exchange服务器过滤)。我想做的是,当发送新电子邮件时,一个对话框会显示安全级别选项,即个人,未分类,分类等,然后附加到主题行的后面[SEC=variable]。目前,我有下面的代码,但这显然必须手动修改,我不希望员工必须这样做(他们不会这样做) 我们将非常感谢您为启动此对话框提供的任何帮助。我正在将Visual Studio 2010与Outlook 2010一起使用。根据建议,使用ItemSend事件显示一个用户

我被要求实施一个解决方案,员工必须为新电子邮件指定一个安全级别(这些邮件由exchange服务器过滤)。我想做的是,当发送新电子邮件时,一个对话框会显示安全级别选项,即
个人
未分类
分类
等,然后附加到主题行的后面
[SEC=variable]
。目前,我有下面的代码,但这显然必须手动修改,我不希望员工必须这样做(他们不会这样做)

我们将非常感谢您为启动此对话框提供的任何帮助。我正在将Visual Studio 2010与Outlook 2010一起使用。

根据建议,使用
ItemSend
事件显示一个用户窗体,用户可以在其中选择发送选项。恐怕我不知道如何在VisualStudio中这样做,只有在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

因为我们在类模块之外创建表单,所以即使在表单关闭之后,我们也可以读取所选择的单选按钮。根据选择,主题将被修改。如果未进行选择,ItemSent事件将被取消,用户将被迫再次点击
Send
,并从userform中选择一些内容。

对于初学者,您可以创建一个userform,在发送时加载/显示,其中组合框仅包含这些值。关闭该对话框时,如果选择了某个选项,请将其附加到主题中(
mailItem.subject=mailItem.subject&“[SEC=UNCLASSIFIED]”
)。
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