Вы не скажете, почему код не работает, если все вложения имеют одинаковые имена.Я предполагаю, что это потому, что SaveAsFile
хочет перезаписать последний «Report.pdf» следующим «Report.pdf» до завершения печати.
Моей первой мыслью было добавить Kill strFilePath
перед * 1005.*.Подумав, я решил, что это не сработает, потому что Shell по-прежнему будет печатать предыдущий «Report.pdf», когда вы пытаетесь его удалить.
Я думаю, что самый простой подход будет:
Добавить
Dim Count as Long
в ваши Dims.
Заменить strFilePath = strTempFolder & "\" & objAttachment.FileName
на:
Count = Count + 1
strFilePath = strTempFolder & "\" & Count & objAttachment.FileName
Это создаст и напечатает файлы с именами «1Report.pdf», «2Report.pdf »,« 3Report.pdf »и так далее.Я использовал префикс, а не традиционный суффикс, потому что он избавляет от необходимости помещать Count
между именем файла и расширением.
Я предполагаю, что у вас есть какой-то метод удаления всех вложений из временной папки.