У меня есть несколько почтовых ящиков в моей Outlook, откуда мне нужно посчитать:Excel VBA Count Перспективы электронных писем/вложения старше 30 дней
- общее количество писем
- сообщения электронной почты старше 30 дней
- получите дату самого старого сообщения.
После этого мне нужно поставить эти цифры на листе превосходства.
Я получил часть 1 сделал, но я застрял в части 2. У меня есть следующий код:
Sub HowManyEmails()
Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
Dim EmailCount As Integer
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
Set objFolder1 = objnSpace.Folders("Outlook Data File").Folders("Inbox")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
For Each MailItem In objFolder1.Items
If MailItem.ReceivedTime < (Date - 30) Then EmailCount = EmailCount + 1
Next
Sheets("Sheet1").Range("C2").Value = EmailCount
Set objOutlook = Nothing
Set objnSpace = Nothing
Set objFolder = Nothing
End Sub
По какой-то причине эта часть: MailItem.ReceivedTime < (дата - 30) не работает должным образом. Я думаю, что это связано с тем, что в ReceimeTime в Outlook также присутствует час/минута полученного сообщения. Может кто-нибудь помочь?
Там нет причин, почему сравнение с DateTime с функцией 'date' должны дать проблемы. По общему признанию, если текущая дата/время в любое время 12 декабря, оператор 'If' будет только увеличивать значение« EmailCount », если почта была получена ** до ** 12 ноября, а не до текущего времени 12 ноября, но это должно быть, по крайней мере, близко к тому, что вам нужно. Почему бы вам не попробовать помещать 'MsgBox MailItem.ReceivedTime' непосредственно перед оператором' If' и посмотреть, какие значения вы получаете. – YowE3K