vba - 遍历已发送邮件文件夹-点击非邮件项目时出错

标签 vba outlook

我正在尝试遍历“已发送邮件”文件夹中的所有邮件消息。

代码在遇到非邮件项(例如日历邀请)之前可以正常工作。

有没有办法跳过已发送项目文件夹中的日历项目?

Sub Find_Sent_Messages_With_Subject()

    Dim myOlapp As Outlook.Application
    Dim myNameSpace As Outlook.NameSpace
    Dim myFolder As Outlook.MAPIFolder
    Dim myItem As Outlook.MailItem


    Set myOlapp = CreateObject("Outlook.Application")
    Set myNameSpace = myOlapp.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(olFolderSentMail)


    For Each myItem In myFolder.Items

        If InStr(1, myItem.Subject, "xxxxxxxxxxxxxx") > 0 Then
            'Stop
        End If

    Next myItem

End Sub

最佳答案

替换

For Each myItem In myFolder.Items

For i = myFolder.Items.Count To 1 Step -1 '<- backwards        
    Set myItem = myFolder.Items(i)
    Debug.Print myItem
Next i

或者尝试在循环时添加object.class

    If myItem.Class = olMail Then

例子:

Dim myItem As Object

For Each myItem In myFolder.Items
    If myItem.Class = olMail Then
        Debug.Print myItem
    End If
Next myItem

编辑

经过测试的 2010 年展望

Option Explicit
Sub Find_Sent_Messages_With_Subject()
    Dim myOlapp As Outlook.Application
    Dim myNameSpace As Outlook.NameSpace
    Dim myFolder As Outlook.MAPIFolder
    Dim myItem As Object

    Set myOlapp = CreateObject("Outlook.Application")
    Set myNameSpace = myOlapp.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(olFolderSentMail)

    For Each myItem In myFolder.Items
        If myItem.Class = olMail Then
            If InStr(1, myItem.Subject, "hello") > 0 Then
                Debug.Print myItem
            End If
        End If
    Next myItem

End Sub

关于vba - 遍历已发送邮件文件夹-点击非邮件项目时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35664506/

相关文章:

excel - 如何使用 VBA 忽略范围内的绿色三角形错误,而不逐个单元循环?

vba - Excel-VBA 使用左侧的 vlookup 结果返回

html - 带有 outlook 签名的 href mailto

.net - 如何以与 Outlook 在 .NET 中相同的方式发送 iCalendar

excel - 从 Excel 创建 Outlook 应用程序会生成类型不匹配错误

.net - Office 插件开发 : VSTO or web-based app using Napa?

excel - 在 VBA Excel 输入框中屏蔽密码

excel - 使用VBA循环不同范围并比较部分字符串

excel - 在 VBA 中,如何编写脚本以将按钮从一个工作表复制到另一个笔记本中的工作表(不记录宏并使用 .select)

c++ - 打开 DBX 和 BAT Outlook 文件