2017-01-09 10 views
0

Ниже приведен код, который я использую, пожалуйста, пройдите через него.Item.Body возвращает "". У кого-нибудь есть идея?

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 objFolder = objnSpace.Folders("Inbox") 
    If Err.Number <> 0 Then 
     Err.Clear 
     MsgBox "No such folder." 
     Exit Sub 
    End If 

    EmailCount = objFolder.Items.Count 

    MsgBox "Number of emails in the folder: " & EmailCount, , "email count" 

    Dim dateStr As String 
    Dim myItems As Outlook.Items 
    Dim myItem As Outlook.MailItem 
    Dim dict As Object 
    Dim msg As String 
    Dim CurrDate 
    Set CurrDate = Now 
    Dim opnTkt 
    Dim clsTkt As Integer 
    Dim omntrRprt As Integer 
    Dim webCht As Integer 
    Set dict = CreateObject("Scripting.Dictionary") 
    Set myItems = objFolder.Items 
    myItems.SetColumns ("SentOn") 
    'Determine date of each message: 
    For Each myItem In myItems 
     dateStr = GetDate(myItem.SentOn) 
     If Month(dateStr) <> Month(Now) Then 
      Defaults = Defaults + 1 
      'here myItem.Body return "" 
     ElseIf InStr(myItem.Body, "Process started") > 0 Then 
      omntrRprt = omntrRprt + 1 
     Else 
      def = def + 1 
     End If 
    Next myItem 

    'Output counts per day: 
    msg = "" 
    msgs = "omniture: " & vbCrLf & omntrRprt & "Web Chat:" & webCht & vbCrLf 
    MsgBox msgs 

    Set objFolder = Nothing 
    Set objnSpace = Nothing 
    Set objOutlook = Nothing 
End Sub 

Function GetDate(dt As Date) As String 
    GetDate = Year(dt) & "-" & Month(dt) & "-" & Day(dt) 
End Function 
+0

Моя идея: вы просто нашли сообщение с пустым телом. Просто продолжайте итерацию через другие предметы. – miroxlav

+0

В электронном письме может быть тело Html, текстовое тело, оба или ни одно из них. Как говорит miroxlav, возможно, это письмо не имеет тела. Что вы видите, если вы посмотрите на электронную почту через пользовательский интерфейс? Другая возможность заключается в том, что электронное письмо имеет тело Html, но не текстовое тело. Если в электронном письме есть оба органа, Outlook и другие почтовые пакеты (?) Будут отображать тело Html и игнорировать текст. Мне кажется, что когда есть тело Html, тело текста было создано, удалив форматирование Html. Если текст находится на фотографиях, которые не являются неизвестными, не может быть ничего, кроме форматирования. –

ответ

0

Thanx для вашего решения, на самом деле, когда мы используем «SetColumns()» и установите значение любой переменной, как я использовал myItems.SetColumns ("SentOn"), вы не можете получить доступ к другим свойствам этого элемента. поэтому просто удалите его и запустите код, который будет работать. :) please go through the link