2017-06-13 83 views
0

由于从这篇文章中,引用Excel VBA for searching in mails of Outlook,我改变了代码稍微重新发送的所有电子邮件在“已发送邮件”文件夹中的同一收件人。展望VBA错误地回复邮件中的文件夹

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

也许你可以通过olmails中的电子邮件主题的名称来查看它的持有 – Lowpar

+0

我用'MsgBox(olMail.To)'替换了'olMail.Send'并且**所有电子邮件**都是显示。但是,只有在出现“olMail.Send”行时才会出现此问题。如果我在'MSGBOX添加(olMail.To)'** **前'olMail.Send'则只有一半**的**显示所有邮件收件人。 –

回答

2

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

否则我怀疑项目集合正在发生变化。更改对于每到一个对于反向反循环和古怪应该消失。

+0

非常感谢。我不知道Mailitem.ReplyAll会返回一个新的MailItem。现在我想到了,你的第二个陈述也是有道理的。 –

相关问题