Получите доступ к VBA, чтобы проверить, получена ли электронная почта Outlook в папке сегодня. Да / Нет - PullRequest
0 голосов
/ 30 сентября 2019

Мне нужно проверить определенную папку, чтобы увидеть, существует ли электронное письмо с сегодняшней датой в этой папке. Никаких подробностей не требуется, только если полученной даты сегодня не существует, то что-то сделать. Приведенный ниже код перебирает электронные письма и заставляет vba отправить мне сообщение электронной почты, если существует электронное письмо с сегодняшней датой в качестве полученной даты, но я хочу, чтобы оно также отправляло мне электронное письмо, если результатов нет. Самое близкое, что я получил, - это получить шесть результатов, все из которых указывают на то, что почтовый элемент не существует (поскольку было 6 сообщений с датами, не совпадающими с сегодняшним днем ​​...). Я знаю, что ответ, скорее всего, смотрит прямо на меня ... не вижу ....

Спасибо.

For Each olMail In OlItems

        'Cond #1  Received today?
        If (Now() - olMail.ReceivedTime < 1) Then
            '...Cond #2 ...and has specific string
             If (InStr(1, olMail.Body, "L_Remittance_YYYYMMDD", 1) > 0) Then
                   '......'Cond #3  and Has attachment?
             If olMail.Attachments.Count > 0 Then
                         '..Cond 4 ...and has data in results  [ "0" evaluates to string not existing  ]  ?
             If (InStr(1, olMail.Body, "No Data Available", 1) = 0) Then


                      'Cond 1-4 all true then save to drop location
                      For j = 1 To olMail.Attachments.Count
                      olMail.Attachments.Item(j).SaveAsFile strFolder & 
                        olMail.Attachments.Item(j).FileName


            ''Loop through files in folder ie For Each o1Mail in OlItems
            Next j

                        'Cond 4
                       End If
                'Cond 3
                 End If
           'Cond 2
           End If
    ''Cond #1
    End If


    Next
    '' If (Now() - olMail.ReceivedTime < 1) = "" Then
    '' Call FailFile
    '' Else
    ''Exit Sub
    ''End If

    Set OlFolder = Nothing
    Set OlItems = Nothing
    Set olMail = Nothing
    Set OlApp = Nothing

     ''NO DATA IN FILE AS PER EMAIL BODY

    aFile = "H:\TEST_DROP\FileName_" & CurrentDate & ".csv"
    If Len(Dir$(aFile)) = 0 Then

       Call NoData

    End If


                ''YES TO DATA IN FILE

    aFile = "H:\TEST_DROP\Metlife_Remittance_Berkadia_" & CurrentDate & ".csv"
    If Len(Dir$(aFile)) > 0 Then
            Call Data
    End If


    End Sub

1 Ответ

1 голос
/ 30 сентября 2019

Похоже, ваше первое условие отслеживает критерии, которые вы ищете.

  1. Создать логическую переменную rec_today
  2. Установить rec_today = FALSE
  3. Перебрать все электронные письма
  4. Переключить rec_today вTRUE ТОЛЬКО ЕСЛИ ваше первое условие выполнено
  5. Проверьте условие rec_today в конце цикла.

Обратите внимание, что если ваш первый критерийникогда не встречается (электронное письмо получено сегодня), rec_today никогда не будет заменено на TRUE. Поэтому ваши действия должны основываться на результатах этой переменной.


Dim rec_today As Boolean            
rec_today = False                 '<---START AT FALSE

For Each olMail In OlItems
    If (Now() - olMail.ReceivedTime < 1) Then            '<--- FLIP TO TRUE HERE
      rec_today = True
        If (InStr(1, olMail.Body, "L_Remittance_YYYYMMDD", 1) > 0) Then
             If olMail.Attachments.Count > 0 Then
                If (InStr(1, olMail.Body, "No Data Available", 1) = 0) Then
                    For j = 1 To olMail.Attachments.Count
                        olMail.Attachments.Item(j).SaveAsFile strFolder & olMail.Attachments.Item(j).Filename
                    Next j
                End If
            End If
        End If
    End If
Next


If rec_today = TRUE Then
    'Code here that should run if email was found from today
Else      
    'Code here that should run if NO EMAIL was found from today
    'i.e. rec_today = FALSE
End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...