创建新电子邮件时VBA Outlook固定主题行提示

时间:2016-11-18 22:05:40

标签: vba email outlook outlook-vba

我对VBA如何运作有一些基本的了解,所以请耐心等待。

我目前使用2007 Outlook。 我正在尝试获取一个在创建新电子邮件时激活的代码,该电子邮件会提示用户选择一个固定的单选按钮选项,如下所示[A]:,[R]:,[F:],[!] :,空白(选项将主题行留空)。

从用户选择中,我希望将该选择自动插入主题行。

所以在我的脑海中,代码将如下工作: 1)用户创建新电子邮件 2)在新的电子邮件窗口打开时,将显示要求用户从上述选项中进行选择的提示。 3)用户进行选择 4)该选择显示在主题行上。

我在网上找到了一些代码,但我似乎无法让它为我工作。

在代码结束时似乎出错了     Private Sub m_colInspectors_NewInspector(ByVal Inspector As     Outlook.Inspector)

我将此代码粘贴到ThisOutlookSession模块中。

Option Explicit
Private WithEvents m_colInspectors As Outlook.Inspectors
Private WithEvents CurrentInspector As Outlook.Inspector

Private Sub Application_Startup()
Set m_colInspectors = Application.Inspectors
End Sub

Private Sub CurrentInspector_Activate()
Dim oMail As Outlook.MailItem
If Len(UserForm1.SelectedSubject) Then
Set oMail = CurrentInspector.CurrentItem
oMail.Subject = UserForm1.SelectedSubject
End If
Set CurrentInspector = Nothing
End Sub

Private Sub m_colInspectors_NewInspector(ByVal Inspector As
Outlook.Inspector)
If TypeOf Inspector.CurrentItem Is Outlook.MailItem Then
If Inspector.CurrentItem.EntryID = vbNullString Then
UserForm1.SelectedSubject = vbNullString
UserForm1.Show
Set CurrentInspector = Inspector
End If
End If
End Sub

然后我创建了一个带有单选按钮和命令按钮的表单,我在其中插入了以下代码。

Option Explicit
Public SelectedSubject As String

Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
SelectedSubject = "Test"
End If
Hide
End Sub

您可以提供任何有助于让脚本正常工作的帮助。

先谢谢。

1 个答案:

答案 0 :(得分:0)

这可能会让你想要的。把它放在ThisOutlookSession下面。当用户点击Sends时触发此操作,这意味着他们无法在发送主题行之前更改主题行。我正在使用UserForm1以及您正在使用的代码。添加任意数量的单选按钮,只需将OptionButton1修改为2和值。

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim strSubject As String
Dim Prompt$

    strSubject = Item.Subject
    ' Show RadioButtons
    UserForm1.Show
    ' Set Subject Line as the value from the selected RadioButton
    strSubject = UserForm1.SelectedSubject

    ' Set the message subject
    Item.Subject = strSubject
    strSubject = Item.Subject

    ' Test if Subject Line is empty
    If Len(Trim(strSubject)) = 0 Then
        Prompt$ = "Subject is Empty. Are you sure you want to send the Mail?"
        If MsgBox(Prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check for Subject") = vbNo Then
            Cancel = True
        End If
    End If
End Sub