2015-05-06 2 views
0

Я в основном пытаюсь создать отчет для моего крупномасштабного макроса. В отчете будет показано, как обрабатываются все почтовые сообщения и какие вложения находятся в письме.Отчет о вложениях электронной почты в Outlook

У меня есть следующий код, который работает, но не дает мне правильные результаты только для файлов .csv. Может ли кто-нибудь увидеть какие-либо проблемы, которые я не могу?

If .Attachments.Count = 0 Then 
    csv_report = "NO" 
    pdf_report = "NO" 
    xls_report = "NO" 
    End If 

    If .Attachments.Count > 0 Then 
    For i2 = 1 To .Attachments.Count 
    If LCase(Right(.Attachments(i2).Filename, 4)) = ".csv" Then 
    csv_report = "YES" 
    Else 
    csv_report = "NO" 
    End If 
    If LCase(Right(.Attachments(i2).Filename, 4)) = ".pdf" Then 
    pdf_report = "YES" 
    Else 
    pdf_report = "NO" 
    End If 
    If LCase(Right(.Attachments(i2).Filename, 4)) = ".xls" Or LCase(Right(.Attachments(i2).Filename, 5)) = ".xlsx" Then 
    xls_report = "YES" 
    Else 
    xls_report = "NO" 
    End If 
    Next 
    End If 

    Sheets("Mail Report").Activate 
    Range("C65000").End(xlUp).Offset(1).Value = csv_report 
    Range("D65000").End(xlUp).Offset(1).Value = pdf_report 
    Range("E65000").End(xlUp).Offset(1).Value = xls_report 

    subject_line = mail.Subject 
    Range("A65000").End(xlUp).Offset(1).Value = subject_line 
+0

Большая проблема, которую я вижу, заключается в том, что вы не используете циклы 'For Each'. –

+0

Пробовал ли вы отлаживать код и видеть фактическое значение FileName? –

+0

Как бы я построил циклы «Для каждого»? Я попробую использовать msgBox для отладки кода – redd

ответ

0

Итак, просто добавив функцию «GoTo», я смог ответить на свой запрос. Спасибо всем, что оставили комментарии.

If .Attachments.Count = 0 Then 
    csv_report = "NO" 
    pdf_report = "NO" 
    xls_report = "NO" 
    End If 

    If .Attachments.Count > 0 Then 
    For i2 = 1 To .Attachments.Count 
    If LCase(Right(.Attachments(i2).Filename, 4)) = ".csv" Then 
    csv_report = "YES" 
    GoTo CSVyes  'if a .csv file is found, it skips to the PDF attachment checker 
    Else 
    csv_report = "NO" 
    End If 
    Next 

CSVyes: 
    For i2 = 1 To .Attachments.Count 
    If LCase(Right(.Attachments(i2).Filename, 4)) = ".pdf" Then 
    pdf_report = "YES" 
    GoTo PDFyes  'if a .pdf file is found, it skips to the XLS attachment checker 
    Else 
    pdf_report = "NO" 
    End If 
    Next 

PDFyes: 
    For i2 = 1 To .Attachments.Count 
    If LCase(Right(.Attachments(i2).Filename, 4)) = ".xls" Or LCase(Right(.Attachments(i2).Filename, 5)) = ".xlsx" Or UCase(Right(.Attachments(i2).Filename, 4)) = ".XLS" Then 
    xls_report = "YES" 
    GoTo XLSyes  'if a .xls file is found, it skips to the end of the checks 
    Else 
    xls_report = "NO" 
    End If 
    Next 

XLSyes: 
    End If 

    Sheets("Mail Report").Activate 
    Range("C65000").End(xlUp).Offset(1).Value = csv_report 
    Range("D65000").End(xlUp).Offset(1).Value = pdf_report 
    Range("E65000").End(xlUp).Offset(1).Value = xls_report 

    subject_line = mail.Subject 
    Range("A65000").End(xlUp).Offset(1).Value = subject_line 
Смежные вопросы