Сохранить одноименные вложения с другим именем - PullRequest
0 голосов
/ 05 июня 2018

Я использую существующий скрипт по этой ссылке: https://www.extendoffice.com/documents/outlook/3747-outlook-auto-download-save-attachments-to-folder.html, чтобы сохранить все вложения в электронном письме в каталоге.

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

Я попытался проверить существующий файл и добавить номер в конце следующего файла.Я удалил эту часть сценария.

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

Ниже приведен текущий сценарий:

Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
Dim date_now As Date
Dim dateStamp As String
Dim LRandomNumber As Integer

LRandomNumber = Int((300 - 200 + 1) * Rnd + 200)
date_now = Now()
dateStamp = Format(date_now, "yyyy-mm-dd-hh-mm-ss")

sSaveFolder = "c:\filepath"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & dateStamp & LRandomNumber & oAttachment.DisplayName
Next
End Sub

1 Ответ

0 голосов
/ 05 июня 2018

Добавьте дополнительный уникальный идентификатор в конец dateStamp, связанный с порядковым номером вложения.

For Each oAttachment In MItem.Attachments
    oAttachment.SaveAsFile sSaveFolder & dateStamp & oAttachment.ID & LRandomNumber & oAttachment.DisplayName
Next

Вы также можете немного больше контролировать:

For iterator = 1 to MItem.Attachments.Count
        oAttachment.SaveAsFile sSaveFolder & dateStamp & iterator & LRandomNumber & oAttachment.DisplayName
Next

Конечно, добавьте этот дискриминатор там, где это наиболее уместно (может быть после LRandomNumber)

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

...