Я пытаюсь автоматизировать некоторые из моих писем, и я сталкиваюсь с тем, что когда, например, файл «.dwg» сначала найден, а «.jpg» также прикреплен, он только классифицирует мое электронное письмо от "Собственных файлов" и не относится к категории "Фотографии".
Dim olkAtt As Outlook.Attachment
'Check each attachment
For Each olkAtt In item.Attachments
'If the attachments file name ends with .dwg
If Right(LCase(olkAtt.FileName), 4) = ".dwg" Then
'Categorize email
item.Categories = "Native Files"
item.Save
'If the attachments file name ends with .dxf
ElseIf Right(LCase(olkAtt.FileName), 4) = ".dxf" Then
'Categorize email
item.Categories = "Native Files"
item.Save
'If the attachments file name ends with .jpg
ElseIf Right(LCase(olkAtt.FileName), 4) = ".jpg" Then
'Categorize email
item.Categories = "Photos"
item.Save
'If the attachments file name ends with .xlsx
ElseIf Right(LCase(olkAtt.FileName), 5) = ".xlsx" Then
'Categorize email
item.Categories = "Native Files"
item.Save
ElseIf InStr(0, LCase(olkAtt.FileName), "RFI") <> 0 Then
'Categorize email
item.Categories = "RFI/DCN/FCN"
item.Save
End If
Exit For
Next
Set olkAtt = Nothing
End Sub
Я думал, что это будет смотреть на каждое вложение, проходить через операторы if и затем классифицировать электронную почту для каждого вложения (я хочу, чтобы электронные письма имели несколько категорий, если есть несколько случаев файлов).
Любая помощь приветствуется.
EDIT:
После некоторой помощи от Тима вот обновленный код:
Sub Categorize_Emails(item As Outlook.MailItem)
Dim olkAtt As Outlook.Attachment, attName As String
'Check each attachment
For Each olkAtt In item.Attachments
attName = LCase(olkAtt.FileName)
'If the attachment is an RFI or DCN or FCN
If InStr(LCase(attName), "rfi") <> 0 Or InStr(LCase(attName), "dcn") <> 0 Or InStr(LCase(attName), "fcn") <> 0 Then
'Categorize email
AddCategory item, "RFI/DCN/FCN"
'If the attachments file name ends with .jpg
ElseIf Right(LCase(olkAtt.FileName), 4) = ".jpg" Then
'Categorize email
AddCategory item, "Photos"
'If the attachments file name ends with .dwg or .dxf or .xlsx
ElseIf Right(LCase(olkAtt.FileName), 4) = ".dwg" Or Right(LCase(olkAtt.FileName), 4) = ".dxf" Or Right(LCase(olkAtt.FileName), 5) = ".xlsx" Then
'Categorize email
AddCategory item, "Native Files"
End If
Next olkAtt
Set olkAtt = Nothing
End Sub
'add a category to an item if it doesn't already exist
Sub AddCategory(itm, cat)
Const SEP As String = ";"
Dim c, bExists As Boolean
If Len(itm.Categories) = 0 Then
itm.Categories = cat
itm.Save
Else
arr = Split(itm.Categories, SEP)
For Each c In arr
If c = cat Then
bExists = True
Exit For
End If
Next c
If Not bExists Then
itm.Categories = Join(arr, SEP) & SEP & cat 'add if not present
itm.Save
End If
End If
End Sub