2015-05-12 7 views
0

Макрос, приведенный ниже, предназначен для получения количества электронных писем, подсчета количества вложений в каждой почте и последующего поиска определенных форматов файлов. Затем он записывает то, что он нашел в определенной таблице Excel.Вложения электронной почты, записанные в Excel

Макрос работает отлично, но теперь я хочу добавить в другой сценарий. Сценарий, который я хочу добавить, заключается в том, что если в письме содержится более 1 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" 
     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 
+0

Извините, если я не уточнил. Но это приведет к появлению сообщения электронной почты с 1 CSV-файлом как «Несколько». Я хочу, чтобы он оставался «YES» для 1, но «Multiple» для тех, у кого есть более 1 – redd

+0

Чек мой ответ ниже. –

ответ

0

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

Этот макрос представляет собой лишь незначительную часть макроса большего масштаба, но в основном, когда в столбце B оставались пробелы, я заменил бы «ДА» «Множественным», что было достаточным для результата.

Dim kk As Long 

Sheets("Mail Report").Activate 
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 
For kk = 1 To LastRow 
If IsEmpty(Cells(kk, 2)) Then 
    Cells(kk, 2) = MAIN_PATH & "For Resolution\" & "multiple_csv\" 
    Cells(kk, 3) = "MULTIPLE" 
End If 
Next kk 
0

Проверьте этот ниже код. Я только что добавил If Else блок, чтобы проверить, если Attachment.count> 1. That's It.

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

Это не сработает. Это процесс: выбрана электронная почта - если количество вложений больше, - первое вложение выбрано - если .csv-файл - «ДА» (перейдите в PDF) - если нет .csv-файл - «НЕТ» (перейдите в PDF) - повторите процесс для проверки PDF и XLS с тем же вложением. – redd

+0

Я запутался в этой строке - «если .csv-файл -« ДА »(перейдите в PDF) - если нет .csv-файл -« НЕТ »(перейдите в PDF)». Просьба уточнить –

Смежные вопросы