Outlook VBA错误地回复文件夹中的电子邮件

时间:2017-06-13 08:46:31

标签: vba email outlook

正如本文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,则该功能会在弹出框架中显示所有电子邮件。

有没有人遇到过这个问题或者知道它背后的原因是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

对于初学者,我不明白为什么你没有使用从ReplyAll方法返回的MailItem对象来设置属性并调用该对象的.Send而不是你的olMail变量所代表的已发送项目的副本

否则我怀疑物品的收集正在改变。使用反向计数器循环将For Each更改为For,并且古怪应该消失。