【问题标题】:Error 13 in for each vba outlook每个 vba Outlook 中的错误 13
【发布时间】:2014-03-21 03:14:06
【问题描述】:

我想在收到回复时删除邮件。这是我的代码片段。我不明白为什么 for each 会遇到 error 13

Sub test222()

Dim oapp As Outlook.Application
Dim osession As Outlook.NameSpace
Dim oInbox As Outlook.MAPIFolder
Dim oSentItem As Outlook.MAPIFolder

Dim omail As Outlook.MailItem
Dim conID As String

Set oapp = New Outlook.Application
Set osession = oapp.GetNamespace("MAPI")
Set oInbox = osession.GetDefaultFolder(olFolderInbox)
Set oSentItem = osession.GetDefaultFolder(olFolderSentMail)

i = 1
For Each omail In oSentItem.Items

If (omail.Subject = "Delivered: aa") Then
     Msgbox "Hi"
     omail.Delete

     Exit For
              Else
     i = i + 1
     End If         
Next

End Sub

【问题讨论】:

    标签: vba for-loop outlook


    【解决方案1】:

    omail 声明为Object 并在循环中检查TypeName。按照您的操作方式,当循环遇到电子邮件消息以外的其他内容时,将出现类型不匹配错误,例如约会项目。

    还可以阅读后期绑定。我建议您在使用非默认库时使用此功能。

    【讨论】:

    • 测试过,但遇到了一些其他问题。这不适用于交货收据,仅适用于一次:当我对某些主题进行测试时,我得到了 msgbox,但邮件不会被删除。当我再次运行宏时,什么也没有发生。 但主要问题是,它不适用于已交付的收据。
    • 我无法重现您遇到的问题,但我建议检查收货收据的类型。它是 MailItem 吗?
    • 它看起来应该是一个 ReportItem。我试过这段代码 [link]stackoverflow.com/questions/78924/… ,但在 for 循环中修改为:If TypeName(msg) = ReportItem Then MsgBox "2" ,但它没有做任何事情。
    • TypeName 返回一个字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2013-07-02
    • 2017-05-20
    相关资源
    最近更新 更多