Excel 变量的发送方名称给出错误438';对象没有';不支持此属性或方法';

Excel 变量的发送方名称给出错误438';对象没有';不支持此属性或方法';,excel,vba,outlook,Excel,Vba,Outlook,每天,我和一位同事都会收到一封格式相同的邮件 如果邮件满足以下要求,我想导入邮件的时间/日期和主题: 主题包含“顺序” 接收时间>=(基于范围) 接收时间0和OutlookMail.ReceivedTime>=范围(“开始日期”)。值和OutlookMail.ReceivedTime首先,您不应该循环浏览文件夹中的所有项目-使用项目。查找/FindNext或项目。限制 其次,您可以在文件夹中包含除MailItem以外的项目-您还可以包含ReportItem(用于NDR)和MeetingItem

每天,我和一位同事都会收到一封格式相同的邮件

如果邮件满足以下要求,我想导入邮件的时间/日期和主题:

  • 主题包含“顺序”
  • 接收时间>=(基于范围)

  • 接收时间0和OutlookMail.ReceivedTime>=范围(“开始日期”)。值和OutlookMail.ReceivedTime首先,您不应该循环浏览文件夹中的所有项目-使用
    项目。查找/FindNext
    项目。限制

    其次,您可以在文件夹中包含除
    MailItem
    以外的项目-您还可以包含
    ReportItem
    (用于NDR)和
    MeetingItem
    (用于约会邀请/更新)。
    请先检查
    OutlookMail.Class
    property=43(
    olMailItem
    )。

    您对项目的建议。Find/FindNext效果很好,使宏运行得更快。438错误确实是通过首先检查OutlookMail.Class属性来解决的。谢谢你的帮助!如果答案回答了您的问题,请将其标记为答案。谢谢
    Sub Outlook()
    Dim OutlookApp As Outlook.Application
    Dim OutlookNamespace As Namespace
    Dim Folder As MAPIFolder
    Dim OutlookMail As Variant
    Dim strMailboxName As String
    Dim i As Integer
    
    strMailboxName = "OutlookName" 'Name of mailaccount
    Set OutlookApp = New Outlook.Application
    Set OutlookNamespace = OutlookApp.GetNameSpace("MAPI")
    Set Folder = Session.Folders(strMailboxName)
    Set Folder = Folder.Folders("FolderName") 'Name of folder
    
    i = 1
    
    For Each OutlookMail In Folder.Items
        If InStr(OutlookMail.Subject, "Order") > 0 And   OutlookMail.ReceivedTime >= Range("start_date").Value And OutlookMail.ReceivedTime <= Range("end_date") And OutlookMail.Sender = Range("Sender") Then
    
            Range("Date_and_time").Offset(i, 0).Value = OutlookMail.ReceivedTime
            Range("Date_and_time").Offset(i, 0).VerticalAlignment = xlTop
            Range("Subject").Offset(i, 0).Value = OutlookMail.Subject
            Range("Subject").Offset(i, 0).VerticalAlignment = xlTop
    
            i = i + 1
    
        End If
    Next OutlookMail
    Set Folder = Nothing
    Set OutlookNamespace = Nothing
    Set OutlookApp = Nothing
    End Sub