正如本文Excel VBA for searching in mails of Outlook所引用的那样,我稍微更改了代码,以便将所有电子邮件重新发送到“已发送邮件”文件夹中的同一收件人。
Function ReplyEmail()
Dim olMail
Dim olMails
Set olApp = CreateObject("Outlook.Application")
Set olNs = olApp.GetNamespace("MAPI")
Set olFldr = olNs.GetDefaultFolder(olFolderSentMail)
Set olMails = olFldr.Items
For Each olMail In olMails
olMail.ReplyAll
olMail.Importance = 2
olMail.Subject = "RE: 2ND " & olMail.Subject
olMail.Send
Next olMail
End Function
但是,由于某些奇怪的原因,此功能仅发送指定文件夹中所有电子邮件的一半。如果有9封电子邮件,则该函数发出5(左边4),然后如果我再次运行迭代,则函数发出2,依此类推......
如果我将olMail.Send
更改为olMail.Display
,则该功能会在弹出框架中显示所有电子邮件。
有没有人遇到过这个问题或者知道它背后的原因是什么?
感谢。
答案 0 :(得分:2)
对于初学者,我不明白为什么你没有使用从ReplyAll方法返回的MailItem对象来设置属性并调用该对象的.Send而不是你的olMail变量所代表的已发送项目的副本
否则我怀疑物品的收集正在改变。使用反向计数器循环将For Each更改为For,并且古怪应该消失。