我想当你点击'发送'时,你会看到一个表格。这是我在Outlook 2010中开发的。
有没有办法用一个宏列表填充一个组合框?
Public Sub Confidential()
Application.ActiveInspector.CurrentItem.Sensitivity = olConfidential
Application.ActiveInspector.CurrentItem.Save
Set MsgSub = Outlook.Application.ActiveInspector.CurrentItem
Set objMail = Outlook.Application.ActiveInspector.CurrentItem
Subject = MsgSub.Subject
MsgSub.Subject = Subject + " - [CONFIDENTIAL]"
Email = objMail.HTMLBody
info = " <html> <body> <FONT color=#666666> <font-size: 11px> <p></p> AUTO TEXT: This message has been marked as 'CONFIDENTIAL' please treat it as such </body> </font> </html>"
objMail.HTMLBody = Email + info
End Sub
Private Sub Sens_DropButtonClick()
Sens.AddItem "Confidential()"
Sens.AddItem "Normal()"
End Sub
Public Sub Send_Click()
Set objMail = Outlook.Application.ActiveInspector.CurrentItem
objMail.Send
End Sub
我认为这是一个公共分支是否正确?
我的目标是当您点击“发送”按钮时,表单会显示一个下拉框,这有4个选项,这些选项可以用于电子邮件,但我已将它们创建为宏并添加了代码它们(添加到消息的主题和页脚)但我不会这样,用户被迫做出选择,因此我为什么要创建这个表单而不是4个按钮。
答案 0 :(得分:2)
我的目标是当您点击“发送”按钮时,表单会显示一个下拉框,这有4个选项,这些选项可以用于电子邮件,但我已将它们创建为宏并添加了代码他们(添加到消息的主题和页脚),但我不会这样,用户被迫做出选择,因此我为什么要创建此表单而不是4个按钮。 - Rsmithy 36分钟前
如果我理解正确,是的,你可以做你想做的事。见这个例子
假设您有一个包含4个选项A,B,C和D的用户表单,并且用户表单代码为
Private Sub UserForm_Initialize()
ComboBox1.AddItem "A"
ComboBox1.AddItem "B"
ComboBox1.AddItem "C"
ComboBox1.AddItem "D"
End Sub
Private Sub CommandButton1_Click()
lstNo = ComboBox1.ListIndex
Unload Me
End Sub
下一步将其粘贴到模块中
Public lstNo As Long
并在ThisOutlookSession
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
UserForm1.Show
MsgBox "user chose " & lstNo & "from combo"
Select Case lstNo
Case -1
'User didn't select anything in the combo
Case 0
'User selected option 1 in the combo
Case 1
'User selected option 2 in the combo
Case 2
'User selected option 3 in the combo
Case 3
'User selected option 4 in the combo
End Select
End Sub
将Select
Statement`中的上述注释替换为您要执行的宏名称,具体取决于用户的选择。
行动中的快照
这是您选择Option D (ListIndex 3)
<强>后续强>
Dim email As String, info As String
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
UserForm1.Show
Select Case lstNo
Case -1
'User didn't select anything, default will be used
Case 0
With Item
.Sensitivity = olNormal
.Save
End With
Case 1
With Item
.Sensitivity = olPersonal
.Save
End With
Case 2
With Item
.Sensitivity = olPrivate
.Save
End With
Case 3
With Item
.Sensitivity = olConfidential
.Subject = .Subject & " - [CONFIDENTIAL]"
Email = .HTMLBody
info = " <html> <body> <FONT color=#666666> <font-size: 11px> <p></p> AUTO TEXT: " & _
"This message has been marked as 'CONFIDENTIAL' please treat it as such </body> </font> </html>"
.HTMLBody = Email & info
.Save
End With
End Select
End Sub
答案 1 :(得分:0)
有没有办法用一个宏列表填充一个组合框?
不在Outlook中,我很害怕。由于可能通过电子邮件传播病毒或进行恶意活动,因此Outlook不支持以编程方式访问VBA IDE。
请参阅VBA Extensibility in Outlook以供参考。
最接近的是通过编程方式显示“运行宏”对话框,如下所示:
ActiveExplorer.CommandBars.FindControl(,186).Execute
但是我不确定它是否在Outlook 2010中可用。
但是显示一个对话框不可能是你的目标。也许如果你解释一下你的目标是什么,有人可以建议一种更好的方法来达到它,而不需要用一个宏名列表填充一个组合框。