Kopieren von Excel nach Outlook - weiße Zellen hinter der oberen linken Bildecke

0

Ich kopiere Excel-Inhalte aus Excel in den Outlook-E-Mail-Text und im Gegensatz zu vielen anderen Benutzern besteht mein Problem nicht darin, dass die Zellformatierung fehlerhaft ist, sondern dass beim Kopieren von Excel-Bildern diese mit einer weißen Zelle in Outlook eingefügt werden hinter der linken oberen Ecke des Bildes.

Fügte ein Beispielbild bei, wie es in Excel und dann in Outlook aussieht.

Bildbeschreibung hier eingeben

Ich habe Stunden damit verbracht, dies zu lösen, einschließlich:

  • Format des Bildes ändern (PNG / JPG / BMP)
  • Spielen Sie mit der Auflösung, Bildkomprimierung, der Option "Verschieben und Größe mit Zellen" usw.
  • Es wurde versucht, den Bereich manuell in den Outlook-E-Mail-Body zu kopieren, statt ihn über ein Makro zu kopieren, das den Arbeitsblattbereich in einen HTML-String konvertiert und die E-Mail direkt aus Excel generiert

Die letzte Option, bei der ich VBA verwendet habe, um die E-Mail direkt aus Excel zu generieren, weist genau das Problem auf, das beim manuellen Kopieren und Einfügen aus Excel auftritt. Das Problem tritt nur im Bereich der Bilder und der Zellen auf, die von der oberen linken Ecke des Bildes berührt werden, unabhängig davon, ob diese Zellen reguläre Zellen sind oder zusammengeführt werden.

Dies lässt mich vermuten, dass dies entweder ein Problem mit meinen Bildern / Objekten ist (ich habe alle Bilder durch Formen ersetzt und hatte dasselbe Problem) oder ein Fehler in MS Office, wenn es um das Kopieren und Einfügen von Inhalten mit Objekten geht .

Würde gerne ein paar Meinungen von euch hören, ich bin am Ende meines Witzes.

Vielen Dank!

Auch hier die Funktion, mit der ich den Bereich nach Outlook kopiere.

Excel VBA

Option Explicit

Private Function RngToEmail(rng As Range, eTo As String, eSubject As String)
    Dim wbThis As Workbook, wbNew As Workbook
    Dim tempFileName As String, imgName As String, newPath As String

    '~~> Do not change "Myimg". This will be used to
    '~~> identify the images
    Dim imgPrefix As String: imgPrefix = "Myimg"

    '~~> This is the temp html file name.
    '~~> Do not change this as when you publish the
    '~~> html file, it will create a folder Temp_files
    '~~> to store the images
    Dim tmpFile As String: tmpFile = "Temp.Htm"

    Set wbThis = Workbooks(rng.Parent.Parent.Name)
    Set wbNew = Workbooks.Add

    '~~> Copy the relevant range to new workbook
    rng.Copy wbNew.Worksheets("Sheet1").Range("A:A")

    newPath = wbThis.Path & "\"
    tempFileName = newPath & tmpFile

    '~~> Publish the image
    With wbNew.PublishObjects.Add(xlSourceRange, _
        tempFileName, "Sheet1", rng.Address, xlHtmlStatic, _
        imgPrefix, "")
        .Publish (True)
        .AutoRepublish = True
    End With

    '~~> Close the new file without saving
    wbNew.Close (False)

    '~~> Read the html file in a string in one go
    Dim MyData As String, strData() As String
    Dim i As Long
    Open tempFileName For Binary As #1
    MyData = Space$(LOF(1))
    Get #1, , MyData
    Close #1
    strData() = Split(MyData, vbCrLf)

    '~~> Loop through the file
    For i = LBound(strData) To UBound(strData)
        '~~> Here we will first get the image names
        If InStr(1, strData(i), "Myimg_", vbTextCompare) And InStr(1, strData(i), ".Png", vbTextCompare) Then
            '~~> Insert actual path to the images
            strData(i) = Replace(strData(i), "Temp_files/", newPath & "Temp_files\")
        End If
    Next i

    '~~> Rejoin to get the new html string
    MyData = Join(strData, vbCrLf)

    '~~> Create the Email
    Dim OutApp As Object, OutMail As Object
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .to = eTo
        .Subject = eSubject

        '~~> Set the body
        .HTMLBody = MyData

        '~~> Show the email. Change it to `.Send` to send it
        .Display
    End With

    '~~> Delete the temp file name
    Kill tempFileName
End Function

Sub Sample()
    RngToEmail ThisWorkbook.Sheets("FINAL").Range("A:F"), "[email protected]", "Some Subject"
End Sub
Patrick
quelle

Antworten:

0

Fügen Sie ein Bild in diese Zelle ein? Beim Testen auf meiner Outlook 2016-Version 1812 stelle ich das Problem ebenfalls fest. Die Zelle hinter dem Bild wird beim Einfügen in den E-Mail-Text leer oder verkabelt angezeigt. Ich habe keine verwandten offiziellen Artikel gefunden und bin mit VBA-Code nicht vertraut.

Bildbeschreibung hier eingeben

Um dies zu vermeiden, können wir in den Einfügeoptionen festlegen, dass ein Bild eingefügt werden soll.

Bildbeschreibung hier eingeben

Perry
quelle
Hmmm, ich habe das selbe Problem aber auch beim Einfügen als Bild bleibt das Problem bestehen. Ist das ein Fehler in Excel?
Armitage2k