【发布时间】:2021-10-02 08:34:41
【问题描述】:
我想检查我的团队是否已回复客户的电子邮件。
Dim O As Outlook.Application
Dim R As Long
Sub project2()
Set O = New Outlook.Application
Dim Omail As Outlook.MailItem
Set Omail = O.CreateItem(olMailItem)
Dim ONS As Outlook.Namespace
Set ONS = O.GetNamespace("MAPI")
Dim FOL As Outlook.Folder
Set FOL = ONS.GetDefaultFolder(olFolderInbox).Folders("MD-GPS")
R = 2
For Each Omail In FOL.Items
Cells(R, 1) = Omail.Subject
Cells(R, 2) = Omail.SenderEmailAddress
Call REPLY_STATUS(Omail.Subject, Omail.SenderEmailAddress)
R = R + 1
On Error Resume Next
Next Omail
End Sub
Sub REPLY_STATUS(MailSubject As String, MailSender As String)
Dim SentEmail As Outlook.MailItem
Set SentEmail = O.CreateItem(olMailItem)
Dim ONS2 As Outlook.Namespace
Set ONS2 = O.GetNamespace("MAPI")
Dim FOL2 As Outlook.Folder
Set FOL2 = ONS2.GetDefaultFolder(olFolderSentMail)
Dim check As String
check = "RE: " & MailSubject
For Each SentEmail In FOL2.Items
If check = SentEmail.Subject And MailSender = SentEmail.Recipients(1).Address Then
Cells(R, 3) = "Yes"
Exit For
Else
End If
On Error Resume Next
Next SentEmail
End Sub
-
由于我们每天收到 500 多封电子邮件,代码变得太慢,因为它会从头开始检查整个文件夹。
我可以添加一个可以在 Excel 表中提及的开始日期吗?代码将从该日期开始。 -
如果我的团队已回复这些电子邮件,则代码未填充第 3 列。
-
代码没有从定义的子文件夹(“MD-GPS”)中提取最新的电子邮件。
注意:为了处理 SMPT 交换帐户错误,我尝试了MailItem.Sender.GetExchangeUser.PrimarySmtpAddress,但如果我将子文件夹更改为其他内容,它就不起作用了。
【问题讨论】: