对象不支持此属性或方法ReceivedTime

我是新的VB代码,我试图执行下面的代码。 但是我得到一个错误消息对象不支持这个属性或方法在这一行

If VBA.DateValue(VBA.Now) - VBA.DateValue(Folder.Items.Item(iRow).ReceivedTime) <= 60 Then 

我认为我的代码没有阅读ReceivedTime 。 我正在使用Microsoft Excel 2010。我该如何解决?

 Option Explicit Sub Download_Outlook_Mail_To_Excel() 'Add Tools->References->"Microsoft Outlook nn.n Object Library" 'nn.n varies as per our Outlook Installation Dim Folder As Outlook.MAPIFolder Dim sFolders As Outlook.MAPIFolder Dim iRow As Integer, oRow As Integer Dim MailBoxName As String, Pst_Folder_Name As String 'Mailbox or PST Main Folder Name (As how it is displayed in your Outlook Session) MailBoxName = "xxxx@yyyy.com" 'Mailbox Folder or PST Folder Name (As how it is displayed in your Outlook Session) Pst_Folder_Name = "Inbox" 'Sample "Inbox" or "Sent Items" 'To directly a Folder at a high level Set Folder = Outlook.Session.Folders(MailBoxName).Folders(Pst_Folder_Name) 'To access a main folder or a subfolder (level-1) For Each Folder In Outlook.Session.Folders(MailBoxName).Folders If VBA.UCase(Folder.Name) = VBA.UCase(Pst_Folder_Name) Then GoTo Label_Folder_Found For Each sFolders In Folder.Folders If VBA.UCase(sFolders.Name) = VBA.UCase(Pst_Folder_Name) Then Set Folder = sFolders GoTo Label_Folder_Found End If Next sFolders Next Folder Label_Folder_Found: If Folder.Name = "" Then MsgBox "Invalid Data in Input" GoTo End_Lbl1: End If 'Read Through each Mail and export the details to Excel for Email Archival ThisWorkbook.Sheets(1).Activate Folder.Items.Sort "Received" 'Insert Column Headers ThisWorkbook.Sheets(1).Cells(1, 1) = "Body" 'Export eMail Data from PST Folder oRow = 1 For iRow = 1 To Folder.Items.Count 'If condition to import mails received in last 60 days 'To import all emails, comment or remove this IF condition If VBA.DateValue(VBA.Now) - VBA.DateValue(Folder.Items.Item(iRow).ReceivedTime) <= 60 Then ' ThisWorkbook.Sheets(1).Cells(oRow, 1).Select oRow = oRow + 1 ThisWorkbook.Sheets(1).Cells(oRow, 1) = Folder.Items.Item(iRow).Body End If Next iRow MsgBox "Outlook Mails Extracted to Excel" Set Folder = Nothing Set sFolders = Nothing End_Lbl1: End Sub 

谢谢

最有可能遇到MailItem以外的项目,最有可能的是ReportItem,它不公开ReceivedTime属性。

为Class属性添加额外的检查(由所有Outlook对象公开)为43(olMail)。

在一个侧面说明,你使用多点表示法,这是一个非常糟糕的主意:

  dim vItems as Outlook.Items dim vItem As Object set vItems = Folder.Items For iRow = 1 To vItems.Count set vItem = vItems.Item(iRow) if vItem.Class = 43 Then 'If condition to import mails received in last 60 days 'To import all emails, comment or remove this IF condition If VBA.DateValue(VBA.Now) - VBA.DateValue(vItem.ReceivedTime) <= 60 Then oRow = oRow + 1 ThisWorkbook.Sheets(1).Cells(oRow, 1) = vItem.Body End If End If Next iRow