【发布时间】:2021-10-25 15:25:53
【问题描述】:
我正在尝试在 VBA 中编写一个宏。我发送了很多电子邮件,但没有得到任何回复。因此,我需要跟踪这一点,以便在适当的时间后发送后续电子邮件。 (如果没有 Outlook 中的宏,就没有成熟的方法可以做到这一点,我觉得这很疯狂)。
**所以..为了解决这个问题,我想要一个执行以下操作的宏:
- 在发送电子邮件之前,我设置了一个带有后续标志的提醒。这样,我可以选择自定义时间来跟进这封特定的电子邮件。
- 如果发送的电子邮件标有后续标志,它也会自动标有“蓝色”类别
- 如果我在设置的计时器用完之前收到回复,则任务被清除,蓝色类别被清除。
- 如果在计时器用完之前我没有收到回复,类别会变为红色,并且我会收到来自 Outlook 的通知提醒。**
这样我可以将我的“已发送”文件夹分类到两个类别中,以查看需要跟进的电子邮件。此外,每当人们没有及时回复时,我都会收到提醒。
如果我在设定的时间内收到回复,以下代码将清除后续标志。 但是,如果我在计时器之前收到回复,我不知道如何为已发送的项目分配一个类别并清除它。我是 VBA 的菜鸟,因此感谢您提供任何帮助。
Public WithEvents objInboxItems As Outlook.Items
Private Sub Application_Startup()
Set objInboxItems = Application.Session.GetDefaultFolder(olFolderInbox).Items
End Sub
'If receive the reply, clear the flag and remove the reminder
Private Sub objInboxItems_ItemAdd(ByVal Item As Object)
Dim objSentItems As Outlook.Items
Dim objVariant As Variant
Dim i As Long
Dim strSubject As String
Dim dSendTime As String
Set objSentItems = Outlook.Application.Session.GetDefaultFolder(olFolderSentMail).Items
If Item.Class = olMail Then
For i = 1 To objSentItems.Count
If objSentItems.Item(i).Class = olMail Then
Set objVariant = objSentItems.Item(i)
strSubject = LCase(objVariant.Subject)
dSendTime = objVariant.SentOn
If LCase(Item.Subject) = "re: " & strSubject Or InStr(LCase(Item.Subject), strSubject) > 0 Then
If Item.SentOn > dSendTime Then
With objVariant
.ClearTaskFlag
.ReminderSet = False
.Save
End With
End If
End If
End If
Next i
End If
End Sub
【问题讨论】: