Прикрепите изображение, встроенное в электронное письмо от Excel с помощью VBA - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь отправить несколько писем из Excel со следующим кодом VBA.Это где я застрял.

По какой-то причине строка - Set attPr = attachment.PropertyAccessor - продолжает выдавать ошибку "Объект не поддерживает свойство или метод".

Я также пытался объявить вложениеявный объект вложения (который, как вы видите, закомментирован) - для этого я продолжал получать сообщение об ошибке «Определенный пользователем тип не определен»

Что я пытаюсь достичь, как вы можете видеть из моего HTMLСозданное тело (htmlTemp) предназначено только для добавления изображения в качестве части тела письма.

Sub Send_Email_Using_VBA_InlineBMPs()

Dim wb As Workbook
Dim sh As Worksheet

Set wb = ThisWorkbook

Dim Email_Subject, Email_Send_From, Email_Send_To, Email_Cc, Email_Body, Email_Attach As String
Dim htmlTemp, body1, body2 As String
Dim Mail_Object, Mail_Single, attachment, attPr As Variant
'Dim attachment As Outlook.Attachments
'Dim oPA As Outlook.PropertyAccessor

For Each sh In wb.Worksheets
    If sh.Name Like "Sheet 13*" Then
        Email_Subject = "HTML TEST - " & sh.Range("C129").Value
        Email_Send_From = "email@email.com"
        Email_Send_To = "email@email.com"
        Email_Cc = "email@email.com" '; 
        'Email_Body = sh.Range("C124").Value
        Email_Attach = ThisWorkbook.Path & "\" & sh.Range("R3").Value & ".pdf"
        Email_Picture = ThisWorkbook.Path & "\" & sh.Range("R3").Value & ".bmp"

        On Error GoTo debugs

        body1 = sh.Range("C124").Value
        body2 = Replace(body1, Chr(10), "<br>") 'to add newline
        Email_Body = body2

        'htmlTemp = "<!DOCTYPE html><html><body>"
        'htmlTemp = "<div id=email_body style='font-size: 12px; font-style: Arial'>"

        htmlTemp = "<div id=email_body>"
        htmlTemp = htmlTemp & Email_Body
        htmlTemp = htmlTemp & "<br><img src='cid:" & sh.Range("R3").Value & "' style='max-width: 100%; height: auto;'><br>"
        htmlTemp = htmlTemp & "</div>"

        'htmlTemp = htmlTemp & "</body></html>"

        Set Mail_Object = CreateObject("Outlook.Application")
        Set Mail_Single = Mail_Object.CreateItem(0)

        Set attachment = Mail_Single.Attachments '.Add(Email_Picture)
        attachment.Add Email_Picture
        Set attPr = attachment.PropertyAccessor
        'attachment.PropertyAccessor.SetProperty "http://schemas.microsoft.com/mapi/proptag/0x3712001F", sh.Range("R3").Value

        With Mail_Single
            .Subject = Email_Subject
            .To = Email_Send_To
            .CC = Email_Cc
            '.body = htmlTemp
            .HTMLBody = htmlTemp
            '.Attachments.Add (Email_Attach)
            '.Attachments.Add Email_Picture, olByValue, 0
            .send
        End With

debugs:
        If Err.Description <> "" Then MsgBox Err.Description


    End If
Next


End Sub

Примечание: изображение уже существует в папке.

Вот ссылки на решения, которые принеслименя к этому моменту. ссылка 1 ссылка 2
Большое спасибо заранее

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Чтобы добавить изображение непосредственно в текст сообщения электронной почты в формате HTML, необходимо использовать следующий код HTML: <img src='image name + extension'>

Вам необходимо выполнить следующие действия:

  1. Прикрепить изображение к сообщению электронной почты
  2. Добавьте этот код в ваш HTMLbody: <img src='image name + extension'>
  3. Вы можете добавить некоторые параметры, такие как высота или ширина.
  4. Имя изображения не может содержать пробелы.

Ниже вы можете увидеть пример.

    Sub Sent_email_with_img()

    Dim my_email As MailItem

    Set out_look_app = CreateObject("Outlook.Application")

    Set my_email = out_look_app.CreateItem(my_item)

    With my_email
       .To = ""
       .CC = ""
       .Subject = ""

       ' here you have to attache img which you would see in email body
       ' attachment will be invisible
       .Attachments.Add Source:="PATH TO IMAGE\IMAGE_NAME.png"
       ' you can edit width and height of img in email body
       ' I changed width to 400 and height to 250
       .HTMLBody = "<p>This is my image</p>" _
                & "<img src='FILE_NAME.png'" _
                & "width=400 height=250>"
       ' display email
       .Display

      End With

    End Sub
0 голосов
/ 09 декабря 2018

Согласно моему исследованию, я нашел эту статью Использование VBA для изменения имени определенного вложения, когда кнопка «Отправить» нажала , и заметил следующее:

Outlook вызовет исключение, еслиВы используете Attachment.PropertyAccessor.SetProperty, чтобы установить PR_ATTACH_LONG_FILENAME.Вы можете использовать Extended MAPI для установки свойства.

...