简体   繁体   中英

Prompt for Subject Line When Creating a New Email

I use 2007 Outlook.

I'm trying to get a code that upon creation of a new email prompts the user to pick one of the fixed radio button options as follows [A]: , [R]:, [F:] , [!]: , Blank (Option to get subject line blank).

I want that selection to be inserted into the subject line automatically.

I found code online but it errors out towards the end of the code.

Private Sub m_colInspectors_NewInspector(ByVal Inspector As Outlook.Inspector)

I pasted this code in the ThisOutlookSession module.

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

I created a form with radio button and a command button where I inserted the following code.

Option Explicit
Public SelectedSubject As String

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

This might get you want you want. Put it under ThisOutlookSession . When the user click on Sends this triggers, meaning they are not able to change the subject line before it is sent. I am using the UserForm1 and the code you are using for that. Add as many radiobuttons as you like and just amend the OptionButton1 to 2 and the value.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM