Сохранить новейшее почтовое вложение

#vba #outlook

#vba #outlook

Вопрос:

Я использую код VBA, который загружает любое вложение в почте Outlook в определенную папку.

Я вызываю код в правиле Outlook «запустить сценарий», где я определил, для какой почты это должно работать.

Код работает от нового к старому, предоставляя мне самое старое вложение, а не самое новое вложение. Это для вложений с одинаковыми именами в каждом письме.

Что мне добавить к приведенному ниже коду, чтобы он перемещался из старого в новый, загружая новые вложения, чтобы переопределить старые вложения с тем же именем.

 Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 
saveFolder = "E:ProjectsTakedaDataZipped Incremental dataincremental"      
For Each objAtt In itm.Attachments          
    objAtt.SaveAsFile saveFolder amp; "" amp; objAtt.DisplayName          
    Set objAtt = Nothing      
Next 
End Sub
  

Комментарии:

1. Правило будет обрабатывать элементы по мере их получения. Вложение в самом последнем полученном элементе будет последним сохраненным. Я считаю, что проблема, описанная в вопросе, не может возникнуть. Как вы обрабатываете элементы в обратном хронологическом порядке? Вы также запускаете код в папке с уже полученными элементами?

2. Если элемент имеет несколько вложений с одинаковым именем, найдите файл с измененной датой

Ответ №1:

Взглянув на коллекцию itm's вложений, у нее есть count свойство, которое содержит количество вложений. Вы можете получить количество, а затем в цикле for выполнить обратный шаг по количеству. Внутри вашего цикла for просто обратитесь к объекту attachments, используя индекс, чтобы ссылаться на отдельные элементы вложений в объекте attachments:

 Dim attachmentCount as integer    
Dim saveFolder As String 
saveFolder = "E:ProjectsTakedaDataZipped Incremental dataincremental" 
attachmentCounter = itm.Attachments.count     
For i = attachmentCounter to 1 Step -1          
    itm.Attachments(i).SaveAsFile saveFolder amp; "" amp; itm.Attachments(i).DisplayName        

Next