我对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
您可以提供任何有助于让脚本正常工作的帮助。
先谢谢。
答案 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