Макрос для изменения размера вложенных изображений в сообщении Outlook - PullRequest
0 голосов
/ 03 сентября 2018

Я хотел бы создать макрос Outlook для изменения размера вложенных файлов JPG размером более 100 КБ. Это для полученных сообщений, которые находятся в папке «Входящие», а не для отправляемых сообщений.

У меня есть код, чтобы найти вложенные файлы JPG с заданным размером, но я не уверен, как изменить их размер, а затем сохранить изображение как вложение.

Sub ResizeAttachedImage()
    Dim objMSG As Outlook.MailItem
    Dim oAtt As Outlook.Attachments
    Dim oFile
    Dim extn As String
    Dim sz As Long


    'Get the source email
    Select Case Application.ActiveWindow.Class
           Case olExplorer
                Set objMSG = ActiveExplorer.Selection.Item(1)
                objMSG.Display
           Case olInspector
                Set objMSG = ActiveInspector.CurrentItem
    End Select

    Set oAtt = objMSG.Attachments

    For Each oFile In oAtt      'loop through the list of file attachments

        'get the file extension
        extn= Right$(oFile.FileName, Len(oFile.FileName) - InStrRev(oFile.FileName, "."))

        If LCase(extn) = "jpg" Then   'process only jpg files

            sz = oFile.Size / 1024  'file size in kb
            If sz > 100 Then

                MsgBox (oFile.FileName + " is " + Str(sz) + " KB and needs to be resized") 'oFile.FileName

                'how to resize attached images to 50%
            End If
        End If
    Next

End Sub

1 Ответ

0 голосов
/ 03 сентября 2018

OOM не позволит вам изменить существующее вложение. Единственный способ - удалить старое вложение (Attachment.Delete) и добавить новое обратно (MailItem.Attachments.Add). Если вы изменяете вложенное изображение-вложение, обязательно сбросьте для свойства PR_ATTACH_CONTENT_ID MAPI (имя DASL http://schemas.microsoft.com/mapi/proptag/0x3712001F) исходное значение, используя Attachment.PropertyAccessor.SetProperty. Если PR_ATTACH_CONTENT_ID отсутствует, возможно, также потребуется установить PR_ATTACH_CONTENT_LOCATION (имя DASL http://schemas.microsoft.com/mapi/proptag/0x3713001F).

Если используется Погашение является опцией (раскрытие: я являюсь ее автором), она предоставляет необработанные данные вложения как RDOAttachment . AsText / AsArray / AsStream, поэтому вложение не нужно будет удалять, а затем добавлять обратно.

...