如何在发送按钮上调用宏点击?

时间:2013-07-10 11:22:15

标签: vba outlook-vba

我有一个宏,它描述了我选择的电子邮件,并填充了从模板创建的表单的“消息”字段:

sText = olItem.Body

Set msg = Application.CreateItemFromTemplate("C:\template.oft")
With msg
   .Subject = "Test"
   .To = "user@user.com"
   'Set body format to HTML
   .BodyFormat = Outlook.OlBodyFormat.olFormatHTML
   .HTMLBody = "<HTML><BODY>EmailDesc: " + sText + "</BODY></HTML>"
   .Display
End With

在这个模板中,我有更多的字段要填充,比如组合框..

我想知道,当我点击发送按钮并在发送之前将其连接到电子邮件的内容时,如何获得此组合的值?

生成这样的东西:

EmailDesc: TEST SEND EMAIL BLA BLA BLA..
ComboboxValue: Item1

THX

1 个答案:

答案 0 :(得分:6)

您需要使用按下发送按钮时触发的Application_ItemSend event。您可以在ThisOutlookSession module中创建此活动。您的事件子可能如下所示:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
On Error GoTo ErrorHandler

    With Item   'Item is your e-mail
        'this way you could change your subject just before you send message
        .Subject = "test subject"   
        'here some changes regarding body of the message
        .Body = .Body & " Additional text at the end or " & _
                "ComboBoxValue: " '& ... reference to combobox value here
    End With

Exit Sub
ErrorHandler:
    MsgBox "Error!"
End Sub

小心 - 这将对您的每封电子邮件采取措施,因此您应添加一些if statements,以使其仅适用于您的某些电子邮件。