Outlook:通过VBA-Makro打开表单,并使用ThisOutlookSession的设置发送邮件

时间:2015-02-23 12:14:08

标签: forms vba outlook send

就像在标题中我想通过Outlook功能区中的按钮打开一个表单。此表单包含所选邮件的MailBody和一些DropDown字段。 单击“发送”时,应弹出一个在ThisOutlookSession中定义的MsgBox,但它不起作用。 当我使用“选择表单”手动打开表单时,它可以正常工作。 这是一个错误,还是有任何解决方法? 提前谢谢,如果有任何不清楚的地方,请询问。


我使用VBA。 在ThisOutlookSession的Project1下,我有以下代码:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) MsgBox ("Hallo") End Sub

表单存储/发布在私有表单库下,并使用以下代码从模块调用:

Set cstmControls = otlMAPIFolder.Items.Add("IPM.Note.Formular3")

但是当我单击功能区的发送按钮时,MsgBox不会出现。

模块的完整代码,调用表单:

Option Explicit 
Public otlAppl As Outlook.Application
Public otlMAPINameSpace As NameSpace
Public otlMAPIFolder As MAPIFolder
Public otlMailItem As MailItem
Public cstmControls As MailItem
Public cstmUprop As UserProperties

Sub FormSend()
Set otlAppl = CreateObject("Outlook.Application")
Set otlMAPINameSpace = otlAppl.GetNamespace("MAPI")
Set otlMAPIFolder = otlMAPINameSpace.GetDefaultFolder(olFolderInbox)
Set otlMailItem = ActiveExplorer.Selection.Item(1)
Set cstmControls = otlMAPIFolder.Items.Add("IPM.Note.Formular3")
Set cstmUprop = cstmControls.UserProperties

'Body
    Dim strBody As String
    strBody = otlMailItem.Body

'Recipient
Dim strTo As String
    strTo = otlMailItem.SenderEmailAddress

strBody = strBody
With cstmControls
        .To = strTo
        .Body = strBody
        .Display True
    End With


End Sub

1 个答案:

答案 0 :(得分:0)

看起来在Outlook中没有触发ItemSend事件。

是否启用了运行宏?信任中心的宏设置和程序访问有哪些设置?

你从哪里获得Application类?

使用Application_Startup()事件来实例化事件处理Application对象。您可以在ItemSend not firing for outlook 2010 - Security is Low论坛主题上了解更多相关信息。