首页 文章

检测何时创建新电子邮件(WithEvents)

提问于
浏览
1

我试图从Excel工作簿中调用存储在Outlooks ' ' ThisOutlookSession'中的过程 . 遗憾的是,较新的Outlook 2010应用程序与MS office产品之间的 application.run *SubName* 不兼容 .

由于'.send'上的安全消息需要有人值守站,因此无法完成代表Outlook发送电子邮件的Excel脚本 . (无法更改公司政策中的安全设置)

目前工作流程

  • 用户在主题和附件中向我发送了一封带有“命令”的电子邮件

-Event侦听器在附件上查找并成功运行Excel例程,并使用以下 Headers 在Outlook中进行侦听

Private WithEvents Items As Outlook.Items
&
Private Sub Items_ItemAdd(ByVal Item As Object)
  • 一旦在Excel中处理,我试图将这些数据自动返回给发件人 . (这是问题所在)

我在Excel中使用后期绑定来创建并准备好返回电子邮件 . 这是' . ''之前的一步 . 理想情况下,我希望避免使用SendKeys语句,因为如果同时处理其他工作簿,它并不完全可靠 .

在Excel中......

Sub test()
Dim aOutlook As Object
Dim aEmail As Object

Set aOutlook = CreateObject("Outlook.Application")
Set aEmail = aOutlook.CreateItem(0)

aEmail.To = "My email address"
aEmail.Subject = "Testing"
aEmail.Body = "Testing"
aEmail.display

End Sub

我一直在无休止地尝试让Outlook识别Excel,创建这个包含MSDN页面中列出的事件的新电子邮件 . 我认为类似下面的代码是识别新mailitem所需要的,但是使用Outlook.mailItem下的大多数预设声明都没有成功 .

Private WithEvents NewItem As Outlook.mailItem

如果您有解决方案或其他想法让我继续,请告诉我

1 回答

  • 1

    解决了,如果有人在将来需要这个 . 它绕过安全警告并且不依赖于发送密钥 .

    Excel准备一封电子邮件并显示它 - 准备好后,Outlook中的“On event”会在加载mailitem时识别“to”地址,然后可以从那里接管:完成.send语句 .

    请注意,需要添加更多参数,例如item.subject中的特定代码,以确保正确发送的电子邮件 .

    在Excel中:

    Sub test()
    Dim aOutlook As Object
    Dim aEmail As Object
    
    Set aOutlook = CreateObject("Outlook.Application")
    Set aEmail = aOutlook.CreateItem(0)
    
    aEmail.To = "abs@123.com"
    aEmail.Subject = "Testing"
    aEmail.Body = "testing"
    aEmail.Display
    
    End Sub
    

    在Outlook中:

    Public WithEvents myItem As Outlook.mailItem
    
    Private Sub Application_ItemLoad(ByVal Item As Object)
        If (TypeOf Item Is mailItem) Then
            Set myItem = Item
        End If
    End Sub
    
    Private Sub myItem_Open(Cancel As Boolean)
    
    If myItem.To = "abs@123.com" Then
        MsgBox "Detected"
        myItem.Send
    End If
    
    End Sub
    

相关问题