VBA - For Each循环在第一个项目后结束

时间:2017-08-18 13:39:42

标签: vba outlook



我试图编写一个相当简单的宏,将收到的日期添加到电子邮件的主题行。
我编写了下面的代码,它适用于单个电子邮件。但是,For Each循环似乎在第一封电子邮件之后结束,而我完全不知道如何解决这个问题。我尝试使用PickFolder行更改ActiveExplorer.Selection行 - 完全相同的问题。

    Sub SelectedMailItemsSubjectWithDate()
        Dim objMainFolder As Outlook.Folder
        Dim MObj As Outlook.MailItem


        Set objMainFolder = Outlook.Application.Session.PickFolder

            For Each MObj In objMainFolder.Items
                'Adds the date to the subject
                MObj.Subject = Format(MObj.ReceivedTime, "YYYYMMDD") & " - " & MObj.Subject
            Next MObj
    End Sub

有没有人可以帮我这个?我非常感激!


我试图添加日期的原因是我们需要以.msg格式存档数千封电子邮件,这些电子邮件在一个除了以外不显示任何内容的在线存储空间中文件的主题行。

2 个答案:

答案 0 :(得分:1)

scipy声明为通用MObj而不是Object - 您可以在文件夹中包含其他项目,例如Outlook.MailItemReportItem等。

答案 1 :(得分:1)

等一下,你怎么知道只处理了一件物品?您是否单步执行代码并看到循环过早退出?或者只修改了一个项目?在后一种情况下,您需要保存项目:

MObj.Subject = Format(MObj.ReceivedTime, "YYYYMMDD") & " - " & MObj.Subject
MObj.Save