Добавить текст и таблицу Excel в качестве изображения на электронную почту - PullRequest
0 голосов
/ 28 октября 2018

Как добавить текст и таблицу Excel (в виде рисунка) к почте Outlook?

Я не хочу использовать функцию RangetoHTML1, поскольку она не сохраняет условное форматирование.

В приведенном ниже коде таблица копируется в виде картинки на почту.Как добавить текст?

Sub SendCA_list()
    Dim oApp As Object, oMail As Object, rng As Range, p As Picture
    Dim strBody As String, wordDoc As Object

    Set oApp = CreateObject("Outlook.Application")
    Set oMail = oApp.CreateItem(olMailItem)
    Set rng = Range("Table4[[#All],[Department]:[Status]]")
    rng.Copy  'copy required table
    Set p = ActiveSheet.Pictures.Paste 'paste and cut the table to make picture
    p.Cut

    With oMail
        .Subject = "Request for CAs - ISO Audit"
        strBody = "<BODY style='font-size:12pt;font-family:HP Simplified'>" & _
            "Hi,<br><br>Please see attached report and the open " & _
            "AIs (itable below).<br><br>Best Regards,<br>Shira" & "</BODY>"
        .HTMLBody = strBody
        Set wordDoc = oMail.GetInspector.WordEditor
        wordDoc.Range.Paste
        .Display
    End With
End Sub

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Хорошо, это еще один способ решить проблему, которая экспортирует изображение, а затем присоединяется к HTML, ссылаясь на прикрепленное изображение.

Sub SendCA_list()

    Dim oApp As Object
    Set oApp = CreateObject("Outlook.Application")

    Dim oMail As Object
    Set oMail = oApp.CreateItem(0)

    Dim rng As Range
    Set rng = Sheet1.Range("Table4[[#All],[Department]:[Status]]")
    rng.CopyPicture xlPrinter

    Dim chartObj As ChartObject
    Set chartObj = Sheet1.ChartObjects.Add(0, 0, rng.Width, rng.Height)

    chartObj.Select
    chartObj.Chart.Paste
    chartObj.Chart.Export ThisWorkbook.Path & "\table.png", "png"
    chartObj.Delete

    Dim strbody As String
    strbody = "<BODY style='font-size:12pt;font-family:HP Simplified'>" & "Hi,<br><br>Please see attached the ISO Internal Audit Report and the open AIs (in the table below)."
    strbody = strbody & "<br><img src='cid:table.png'/>"
    strbody = strbody & "<br><br>Best Regards,<br>Shira<br><br></BODY>"

    With oMail

        .Subject = "Request for CAs - ISO Audit"
        .Attachments.Add ThisWorkbook.Path & "\table.png", 1, 0
        .htmlbody = strbody
        .Display
    End With
End Sub
0 голосов
/ 28 октября 2018

То, что в настоящее время происходит в вашем коде, - команда вставки изображения, удаляющая HTML-код уже в теле письма.Если вы сначала вставите, а затем измените текущий HTMLbody (изображение) на свой String HTML, вы получите желаемые результаты.Примечание: вам может понадобиться поэкспериментировать с этим, чтобы удовлетворить ваши точные потребности форматирования электронной почты.

Редактировать: Я включил полный Sub теперь ниже.Я также добавил .display перед добавлением строки BODY к вставленному изображению.Между тестированием и публикацией я удалил .display, но позже понял, что это необходимо для ссылки на значение .htmlbody.

Sub SendCA_list()

    Dim oApp As Object
    Set oApp = CreateObject("Outlook.Application")
    Dim oMail As Object

    Set oMail = oApp.CreateItem(0)

    Dim rng As Range
    Set rng = Range("Table4[[#All],[Department]:[Status]]")
    rng.Copy  'copy required table

    Dim p As Picture
    Set p = ActiveSheet.Pictures.Paste 'paste and cut the table to make it picture
    p.Cut

    Dim strbody As String

    With oMail

       .Subject = "Request for CAs - ISO Audit"
        strbody = "<BODY style='font-size:12pt;font-family:HP Simplified'>" & "Hi,<br><br>Please see attached the ISO Internal Audit Report and the open AIs (in the table below).<br><br>Best Regards,<br>Shira<br><br></BODY>"

        Dim wordDoc As Object
        Set wordDoc = oMail.GetInspector.WordEditor

        wordDoc.Range.Paste
        .Display
        .htmlbody = strbody & .htmlbody

    End With
End Sub
...