Tipp: Andere Sprachen sind Google-Übersetzungen. Sie können die English Version dieses Links.
Einloggen
x
or
x
x
Registrieren
x

or

Wie fügt man einen Bereich von Zellen als Bild in Excel in den Nachrichtentext ein?

Wenn Sie einen Zellbereich kopieren und als Bild in den Nachrichtentext einfügen müssen, wenn Sie eine E-Mail aus Excel senden. Wie konntest du mit dieser Aufgabe umgehen?

Fügen Sie einen Zellbereich in den E-Mail-Text als Bild mit VBA-Code in Excel ein


Fügen Sie einen Zellbereich in den E-Mail-Text als Bild mit VBA-Code in Excel ein


Möglicherweise gibt es keine andere gute Methode für Sie, diesen Job zu lösen, ein VBA-Code in diesem Artikel kann Ihnen helfen. Bitte mach folgendes:

1. Aktivieren Sie das Blatt, das Sie kopieren und die Zellen als Bild einfügen möchten, halten Sie die Maustaste gedrückt ALT + F11 Schlüssel zum Öffnen der Microsoft Visual Basic für Applikationen Fenster.

2. Klicken Sie Einsatz > Modul, und fügen Sie den folgenden Code in die Modul Fenster.

VBA-Code: Fügen Sie einen Bereich von Zellen als Bild in den E-Mail-Text ein:

Sub sendMail()
        Dim TempFilePath As String
        Dim xOutApp As Object
        Dim xOutMail As Object
        Dim xHTMLBody As String
        Dim xRg As Range
        On Error Resume Next
        Set xRg = Application.InputBox("Please select the data range:", "KuTools for Excel", Selection.Address, , , , , 8)
        If xRg Is Nothing Then Exit Sub
        With Application
            .Calculation = xlManual
            .ScreenUpdating = False
            .EnableEvents = False
        End With
        Set xOutApp = CreateObject("outlook.application")
        Set xOutMail = xOutApp.CreateItem(olMailItem)
        Call createJpg(ActiveSheet.Name, xRg.Address, "DashboardFile")
        TempFilePath = Environ$("temp") & "\"
        xHTMLBody = "<span LANG=EN>" _
                & "<p class=style2><span LANG=EN><font FACE=Calibri SIZE=3>" _
                & "Hello, this is the data range that you want:<br> " _
                & "<br>" _
                & "<img src='cid:DashboardFile.jpg'>" _
                & "<br>Best Regards!</font></span>"
        With xOutMail
            .Subject = ""
            .HTMLBody = xHTMLBody
          .Attachments.Add TempFilePath & "DashboardFile.jpg", olByValue
            .To = " "
            .Cc = " "
            .Display
        End With
End Sub
Sub createJpg(SheetName As String, xRgAddrss As String, nameFile As String)
    Dim xRgPic As Range
    ThisWorkbook.Activate
    Worksheets(SheetName).Activate
    Set xRgPic = ThisWorkbook.Worksheets(SheetName).Range(xRgAddrss)
    xRgPic.CopyPicture
    With ThisWorkbook.Worksheets(SheetName).ChartObjects.Add(xRgPic.Left, xRgPic.Top, xRgPic.Width, xRgPic.Height)
        .Activate
        .Chart.Paste
        .Chart.Export Environ$("temp") & "\" & nameFile & ".jpg", "JPG"
    End With
    Worksheets(SheetName).ChartObjects(Worksheets(SheetName).ChartObjects.Count).Delete
Set xRgPic = Nothing
End Sub

Text: Im obigen Code können Sie den Inhalt und die E-Mail-Adresse Ihres Körpers ändern.

3. Drücken Sie nach dem Einfügen des Codes F5 Um diesen Code auszuführen, wird ein Dialogfeld geöffnet, das Sie daran erinnert, den Datenbereich auszuwählen, den Sie als Bild in den E-Mail-Text einfügen möchten, siehe Screenshot:

4. Dann klick OK Knopf und a NACHRICHT Fenster wird angezeigt, der ausgewählte Datenbereich wurde als Bild in den Body eingefügt, siehe Screenshot:

Text: In dem NACHRICHT Fenster, können Sie auch den Body-Inhalt und E-Mail-Adressen in den Feldern An und Cc nach Bedarf ändern.

5. Endlich, klick Senden Schaltfläche, um diese E-Mail zu senden.


Text: Wenn Sie mehrere Bereiche aus verschiedenen Arbeitsblättern einfügen müssen, kann der folgende VBA-Code Ihnen einen Gefallen tun:

Wählen Sie zunächst die mehreren Bereiche aus, die Sie als Bilder in den E-Mail-Text einfügen möchten, und wenden Sie dann den folgenden Code an:

VBA-Code: Fügen Sie mehrere Zellbereiche als Bild in den E-Mail-Text ein:

Sub sendMail()
    Dim TempFilePath As String
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xHTMLBody As String
    Dim xRg As Range
    Dim xSheet As Worksheet
    Dim xAcSheet As Worksheet
    Dim xFileName As String
    Dim xSrc As String
    On Error Resume Next
    TempFilePath = Environ$("temp") & "\RangePic\"
    If Len(VBA.Dir(TempFilePath, vbDirectory)) = False Then
      VBA.MkDir TempFilePath
    End If
    Set xAcSheet = Application.ActiveSheet
    For Each xSheet In Application.Worksheets
        xSheet.Activate
        Set xRg = xSheet.Application.Selection
        If xRg.Cells.Count > 1 Then
            Call createJpg(xSheet.Name, xRg.Address, "DashboardFile" & VBA.Trim(VBA.Str(xSheet.Index)))
        End If
    Next
    xAcSheet.Activate
    With Application
        .Calculation = xlManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    Set xOutApp = CreateObject("outlook.application")
    Set xOutMail = xOutApp.CreateItem(olMailItem)
    xSrc = ""
    xFileName = Dir(TempFilePath & "*.*")
    Do While xFileName <> ""
        xSrc = xSrc + VBA.vbCrLf + "<img src='cid:" + xFileName + "'><br>"
        xFileName = Dir
        If xFileName = "" Then Exit Do
    Loop
    xHTMLBody = "<span LANG=EN>" _
                & "<p class=style2><span LANG=EN><font FACE=Calibri SIZE=3>" _
                & "Hello, this is the data range that you want:<br> " _
                & "<br>" _
                & xSrc _
                & "<br>Best Regards!</font></span>"
    With xOutMail
        .Subject = ""
        .HTMLBody = xHTMLBody
        xFileName = Dir(TempFilePath & "*.*")
        Do While xFileName <> ""
            .Attachments.Add TempFilePath & xFileName, olByValue
            xFileName = Dir
        If xFileName = "" Then Exit Do
        Loop
        .To = " "
        .Cc = " "
       .Display
    End With
    If VBA.Dir(TempFilePath & "*.*") <> "" Then
        VBA.Kill TempFilePath & "*.*"
    End If
End Sub
Sub createJpg(SheetName As String, xRgAddrss As String, nameFile As String)
    Dim xRgPic As Range
    ThisWorkbook.Activate
    Worksheets(SheetName).Activate
    Set xRgPic = ThisWorkbook.Worksheets(SheetName).Range(xRgAddrss)
    xRgPic.CopyPicture
    With ThisWorkbook.Worksheets(SheetName).ChartObjects.Add(xRgPic.Left, xRgPic.Top, xRgPic.Width, xRgPic.Height)
        .Activate
        .Chart.Paste
        .Chart.Export Environ$("temp") & "\RangePic\" & nameFile & ".jpg", "JPG"
    End With
    Worksheets(SheetName).ChartObjects(Worksheets(SheetName).ChartObjects.Count).Delete
Set xRgPic = Nothing
End Sub


Excel-Produktivitätstools

Kutools for Excel - Das beste Tool für die Office-Produktivität

  • Bringt 300 mit leistungsstarken, erweiterten Funktionen nach Excel, damit Sie intelligenter, schneller und besser arbeiten können.
  • Sie müssen keine Formeln und VBA-Codes mehr auswendig lernen. Geben Sie Ihrem Gehirn eine Pause.
  • Werden Sie ein Excel-Experte in 3 Minuten. Komplizierte und wiederholte Operationen können in Sekunden durchgeführt werden.
  • Reduzieren Sie jeden Tag Tausende von Tastatur- und Mausoperationen und verabschieden Sie sich jetzt von Berufskrankheiten.
  • 110,000 hochwirksame Mitarbeiter und 300 + weltweit renommierte Unternehmen.
  • Kostenlose Testversion für 60-Tage mit allen Funktionen. Geld-zurück-Garantie für 60-Tage. 2 Jahre kostenloses Upgrade und Support.

Office-Registerkarte - Bringt eine mit Registerkarten versehene Benutzeroberfläche in Office, um Ihre Arbeit zu vereinfachen.

  • Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel, PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50% und reduziert täglich Hunderte von Mausklicks für Sie!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    greg horton · 5 months ago
    This is awesome, I love it! Quick question. I see that it is adding a border to the image. Is there a way to generate without a border? Thanks in advance!
    • To post as a guest, your comment is unpublished.
      Ian Wildman · 4 months ago
      I'd love to know how to paste without generating a border as well. This code is awesome, super intuitive and straightforward. Thank you!
  • To post as a guest, your comment is unpublished.
    Piotrek · 1 years ago
    wyrzuca mi błąd w linijce "Set xOutMail = xOutApp.CreateItem(olMailItem)" olMailItem - nie zdefiniowana
    oraz ".Attachments.Add TempFilePath & "DashboardFile.jpg", olByValue" olByValue - nie zdefiniowana