vba - VBA Excel-Outlook-对于每个-返回邮件=没有-错误mngt

标签 vba email foreach error-handling outlook

我在Excel上制作了一个小宏,目的是在Outlook中寻找具有特定主题和特定接收时间的邮件。几乎与每个人都可以很好地工作,但与我的同事之一的ookook收件箱却有bug。

我写的代码:

For Each olMail In oDefaultFolder.Items
    If olMail.Subject = "DDJ of " & date_target Then
        MyAr = Split(olMail.Body, vbCrLf)

        For i = LBound(MyAr) To UBound(MyAr)
        Sheets("DDJ").Cells(i + 1, 1).Value = MyAr(i)
        Next i
        ddj_empty = False
        Exit For
    End If
Next olMail

我尝试使用3个Outlook帐户,但没有pb,但是使用了第4个帐户,它就出错了。我手动删除了一个帐户,但从约会conf到邮件似乎有很多,这似乎很正常

它返回的pb突出显示“Next oLMail”,并说oLMail = Nothing
我希望我的宏继续运行并继续其搜索,并且在处理此问题时遇到了一些麻烦。

我一直在寻找类似于“如果邮件=什么然后我= i + 1 ..下一个我”的smtg,但是我在Google上找到了“继续”,但是我的Excel无法识别继续功能?所以我不知道该怎么办

有什么建议吗?
非常感谢

最佳答案

Outlook文件夹可以包含different item types。不同的类型不相同。例如,MeetingItem支持MeetingWorkspace propertyMailItems不要。

在使用olMail之前,最好使用vba TypeName函数检查类型。

' Perform action on specific item types only.
' TESTED: Outlook 2010.
Sub CheckItemType()
    Dim i As Object         ' Used to loop over items.
    Dim iType As String     ' Used to hold type of above item.

        ' Loop over all items in the inbox.
        For Each i In Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
            iType = TypeName(i)

            ' Limit actions to required types.
            If iType = "MailItem" Or iType = "MeetingItem" Then
                ' Your logic.
            End If
        Next
End Sub

关于vba - VBA Excel-Outlook-对于每个-返回邮件=没有-错误mngt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40788292/

相关文章:

excel - 如果内容的总和 = 零并跳过空白,我如何隐藏 Excel 行?

excel - VBA 从形状运行宏和屏幕提示(或工具提示)。我无法获得我发现工作的代码

arrays - 将执行时定义的一系列单元格复制到数组

java - 无法使用 SMTP 使用 JavaMail 和 Amazon SES 发送邮件

iphone - 我们可以获取 iPhone 中配置的总电子邮件帐户吗?

mysql - 在 foreach 中使用 %dopar% 写入数据帧

C#、For 循环和速度测试……完全相同的循环第二次更快?

vba - 无法使用 VBA 让 Excel 打印特定工作表

c# - 如何消除在不同表名中执行的重复 SQL 查询

ios - Ionic 4 在 Android 上工作时未在 IOS 设备上打开外部/默认电子邮件应用程序