gpt4 book ai didi

excel - Outlook 发送事件类

转载 作者:行者123 更新时间:2023-12-04 20:38:26 27 4
gpt4 key购买 nike

背景:
前段时间,我发现了一个类模块,可以从 Outlook 中获取事件,具体而言,正如标题所示,我正在使用它来捕获发送事件项 - 以了解它是否真的发送 -。这是 Class 模块本身。我不记得我以前是如何调用它的(我只是保存它以供以后引用,但是,删除了在我的主子中调用它的方式)。

Option Explicit
Public WithEvents itm As Outlook.MailItem
Private Sub itm_Send(Cancel As Boolean)
Dim blnSent As Boolean
On Error Resume Next
blnSent = itm.Sent
If Err.Number = 0 Then
Debug.Print "Email not sent"
Else
Debug.Print "Email sent")
End If
End Sub

问题:
我忘记了我应该如何在发送电子邮件的子系统中调用它。我在顶部尝试了以下声明:
Dim itmevt As New CMailItemEvents
Public EmailToSend As Outlook.MailItem

然后在我发送电子邮件的子中:
Set itmevt.itm = EmailToSend

但是,我无法在类里面触发发送事件。

具体问题:
1. 如何正确调用类?
2.如何有效地获取发送/未发送的值(我想将其写在一个单元格中以供以后分析-发送/未发送-)我想解析为一个公共(public)函数,可以将值取回调用它的子,但是,我认为这不是最好的方法

最佳答案

从我能够锻炼的内容来看,这门课有点假。正确的用法是 Set itmevt.itm = OutApp.CreateItem(0) .问题在于使用 Send 事件来测试该项目是否已发送。请注意,事件的 Cancel 参数。设置Cancel = True防止电子邮件被发送。这告诉我们,如果直到此事件完成后才发送电子邮件。 Send 将始终返回 false,并且永远不会导致 Send 事件出错。

另一方面,如果我们在发送电子邮件后测试查看 MailItem.Sent,它将抛出 The item has been moved or deleted.错误。

enter image description here

知道我们可以创建一个函数来发送我们的电子邮件,如果电子邮件已发送,则返回 True,否则返回 False。

Function SendEmail(addressTo As String, addressCC As String, Subject As String, HTMLBody As String) As Boolean
Dim OutApp As Object
Set OutApp = CreateObject("Outlook.Application")

With OutApp.CreateItem(0)
.To = addressTo
.CC = addressCC
'OutMail.BCC = ""
.Subject = Subject
.HTMLBody = HTMLBody
.Send
On Error Resume Next

Call .Sent

SendEmail = Err.Number <> 0

If Err.Number = 0 Then
Debug.Print "Email not sent"
Else
Debug.Print "Email sent"
End If

On Error GoTo 0

End With



Set OutApp = Nothing

End Function

关于excel - Outlook 发送事件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38405423/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com