Outlook испортил PDF при использовании SaveAsFile - PullRequest
0 голосов
/ 01 февраля 2019

Я использую следующий код для автоматического экспорта PDF-файлов в Outlook, когда они поступают в мой почтовый ящик.Однако сохраненный файл поврежден.Метод SaveAsFile принимает только один аргумент - путь к файлу для сохранения - в документации не сказано, что я могу передать тип файла.Как сохранить эти PDF-вложения без повреждения файлов?

    Private WithEvents Items As Outlook.Items

    Private Sub Application_Startup()

        'Declaring Variables [BD]
        Dim oOutlook As Outlook.Application
        Dim oNameSpace As Outlook.NameSpace
        Dim oFolder As Outlook.MAPIFolder

        'Intializing Variables [BD]
        Set oOutlook = Outlook.Application
        Set oNameSpace = Application.GetNamespace("MAPI")

        Set oFolder = oNameSpace.GetDefaultFolder(olFolderInbox).Parent
        Set oFolder = oFolder.Folders("Produce Availability").Folders("Earls Organic")
        Set Items = oFolder.Items

    End Sub

    Private Sub Items_ItemAdd(ByVal Item As Object)

    'Declaring Variables [BD]
    Dim sOutputFileName As String

    Dim oMessage As Outlook.MailItem
    Dim oAttachment As Outlook.Attachments

    'Initializing Variables [BD]
    sDateTime = Format(Now(), "yyyymmddhhnnss")
    sOutputFolderPath = "C:\Earls Organic\"

        On Error GoTo ErrorHandler

        If TypeName(Item) = "MailItem" Then

            Set oMessage = Item
            Set oAttachment = oMessage.Attachments

            sOutputFileName = oMessage.Subject & " " & sDateTime
            sOutputFolderPathAndName = sOutputFolderPath & sOutputFileName & ".pdf"
            oAttachment.Item(1).SaveAsFile sOutputFolderPathAndName

            Set oAttachment = Nothing
            Set oItem = Nothing

        End If

    ProgramExit:
        Exit Sub

    ErrorHandler:
            MsgBox Err.Number & " - " & Err.Description
            Resume ProgramExit

    End Sub

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

По запросу, вот мой комментарий в качестве ответа:

Вы уверены, что Приложение (1) является файлом PDF?Подписи и изображения могут быть записаны в виде вложений.Вы должны отсканировать коллекцию вложений, проверяя расширение, пока не найдете файл PDF.

0 голосов
/ 01 февраля 2019

SaveAsFile не портит файлы.Вы никогда не проверяете, что файл на самом деле является PDF - у вас могут быть другие вложения, которые могут или не могут рассматриваться как таковые в Outlook (например, изображения).Вы предполагаете, что самое первое вложение - это PDF.Просмотрите все вложения, проверьте свойство Attachment.FileName, чтобы убедиться, что вы получите то, что ожидаете.

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