Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Zwischenablage in Outlook htmlbody

Forumthread: Excel Zwischenablage in Outlook htmlbody

Excel Zwischenablage in Outlook htmlbody
18.01.2022 16:59:28
Benjamin
Guten Tag Community,
ich lese immer wieder hier bei euch im Forum und es hat mir schon sehr oft geholfen.
Nun steh ich leider wirklich an und würde die Hilfe von euch benötigen.
Ich habe eine Excel in der ich einen Bestimmten Bereich per "copypicture" Kopiere & möchte diesen in meinem Code zur Erstellung einer E-Mail im .htmlbody einfügen.
Ich habe es mit SendKeys"^v" versucht, den kann ich aber nicht mitten im Body einbauen daher er mir einen Fehler zurück gibt.
Wenn ich den SendKeys am Ende einsetze kopiert er mir die Zwischenablage am Anfang der Mail ( weil da ja der Cursor leider steht)
Vll könntet ihr mir helfen. Anbei der Code den Ich verwende. Ich habe den Befehl den ich im Textkörper haben möchte mit 2 !! markiert, damit ihr wisst wo er stehen soll.
Vielen Danke schonmal für eure Zeit und hoffentlich Lösung :)
https://www.herber.de/bbs/user/150492.txt
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Zwischenablage in Outlook htmlbody
18.01.2022 18:27:55
volti
Hallo Benjamin,
SendKeys ist unsicher und das würde ich nicht verwenden.
Du kannst das Bild oder auch einen formatierten Bereich über den WordEditor einfügen.
Hier habe ich es mal eingebaut, aber nicht getestet.
Ggf. noch an der Einfügestelle .Start experimentieren, da ich nicht weiß, in wieweit Deine HTML-Formatierung da mit reinspielt.
Probiere es halt mal aus....
Code:

[Cc][+][-]

Option Explicit Sub Email() ' ' Email Makro ' ' Tastenkombination: Strg+m ' Windows("Tagesbericht fürTestkopie 11012022.XLSM").Activate Range("A5:R13").CopyPicture Appearance:=xlScreen, Format:=xlPicture Windows("Tagesbericht für Test 11012022.xlsm").Activate 'Markiert im Tagesbericht den obersten Bereich (aktueller Tag)und kopiert ihn als Foto in die _ Zwischenablage Dim olApp As Object Dim Signatur As String Dim sMailtext As String Set olApp = CreateObject("Outlook.Application") With olApp.CreateItem(0) .GetInspector.Display Signatur = .htmlbody .GetInspector.Display .Recipients.Add "E-Mail Adresse" 'Empfänger .CC = "" 'CC .Subject = "" & Date 'Betreff sMailtext = "<p style='font-family:calibri;font-size:11pt'>Sehr geehrte Damen und Herren," & vbLf _ & "Anbei der Tagesbericht </p>" & vbLf _ & "<p style='font-family:arial;font-size:9pt'>Pfad/<b>Tagesbericht</b>" .htmlbody = Replace(sMailtext, vbLf, "<br>") & Signatur With .GetInspector.WordEditor.Application.Selection .Start = Len(sMailtext) + 1 .Paste ' Grafik in Mail einfügen End With 'Nachricht .ReadReceiptRequested = False 'Lesebestätigung aus .Display 'Zeigt E-Mail an, ohne zu senden End With Set olApp = Nothing End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Excel Zwischenablage in Outlook htmlbody
19.01.2022 07:24:01
Benjamin
Guten Morgen Karl-Heinz,
vielen lieben Dank für deine Anpassung, sie Funktioniert wunderbar :)
Ich wusste nicht das SendKeys so unsicher ist in der Ausführung, werde es mir aber für die Zukunt auf jedenfall merken.
Nochmals Vielen Dank der Code funktioniert jetzt genau so wie ich mir das erhofft hatte.
Einen schönen Tag noch :)
lg Benjamin
Anzeige
AW: Excel Zwischenablage in Outlook htmlbody
19.01.2022 08:35:17
volti
Hallo Benjamin,
man kann SendKeys schon verwenden, wenn sicher gestellt ist, dass sich kein Fenster zwischenzeitlich in den Vordergrund schieben kann.
Die Tastaturanschläge werden nämlich immer an das aktive, im Vordergrund liegende Fenster gesendet.
Gibt es eine Alternative, wie in diesem Fall, sollte man lieber diese nutzen. Außerdem kannst Du hier gezielt die Einfügestelle bestimmen.
Einen Gruß aus dem Schwarzwald und Dir auch einen schönen Tag
Karl-Heinz
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Zwischenablage in Outlook htmlbody nutzen


Schritt-für-Schritt-Anleitung

Um die Excel-Zwischenablage in den Outlook .htmlbody einzufügen, kannst Du folgenden VBA-Code verwenden:

Sub Email()
    Dim olApp As Object
    Dim Signatur As String
    Dim sMailtext As String

    ' Outlook-Anwendung erstellen
    Set olApp = CreateObject("Outlook.Application")

    With olApp.CreateItem(0)
        .GetInspector.Display
        Signatur = .htmlbody
        .Recipients.Add "E-Mail Adresse"
        .Subject = "Betreff"

        sMailtext = "<p style='font-family:calibri;font-size:11pt'>Sehr geehrte Damen und Herren,</p>" & vbLf & _
                    "<p style='font-family:arial;font-size:9pt'>Anbei der Tagesbericht</p>"
        .htmlbody = Replace(sMailtext, vbLf, "<br>") & Signatur

        ' Grafik in Mail einfügen
        With .GetInspector.WordEditor.Application.Selection
            .Start = Len(sMailtext) + 1
            .Paste
        End With

        .Display ' Zeigt E-Mail an, ohne zu senden
    End With

    Set olApp = Nothing
End Sub

In diesem Code wird die Excel-Zwischenablage verwendet, um ein Bild oder einen Bereich als Grafik in den E-Mail-Text einzufügen. Stelle sicher, dass Du den richtigen Bereich in Excel mit Range("<Dein_Bereich>").CopyPicture kopierst, bevor Du die E-Mail erstellst.


Häufige Fehler und Lösungen

  • Fehler: SendKeys funktioniert nicht zuverlässig.

    • Lösung: Verwende stattdessen die .htmlbody-Eigenschaft in Kombination mit dem WordEditor, wie im obigen Code gezeigt. Das ist sicherer und zuverlässiger.
  • Fehler: Bild wird nicht eingefügt.

    • Lösung: Achte darauf, dass der Cursor an der richtigen Stelle in der E-Mail platziert ist, bevor Du das Bild einfügst. Dies geschieht über die .Start-Eigenschaft im VBA-Code.

Alternative Methoden

Eine alternative Methode besteht darin, den Inhalt von Excel direkt in ein Word-Dokument zu kopieren und dann das Word-Dokument in den Outlook htmlbody einzufügen. Dies kann über die Word-Objektbibliothek in VBA erfolgen, um eine präzisere Steuerung über das Layout und die Formatierung des Textes zu erhalten.


Praktische Beispiele

Hier ist ein Beispiel, wie Du einen bestimmten Bereich in Excel kopierst und in eine Outlook-E-Mail einfügst:

Sub SendMailWithPicture()
    ' Kopiere einen bestimmten Bereich als Bild
    Range("A1:C10").CopyPicture Appearance:=xlScreen, Format:=xlPicture
    ' Der Rest des Codes folgt wie oben
End Sub

In diesem Beispiel wird der Bereich A1:C10 als Bild in die Zwischenablage kopiert und dann in die E-Mail eingefügt.


Tipps für Profis

  • Experimentiere mit der .Start-Eigenschaft, um das Einfügen an der gewünschten Position zu steuern.
  • Achte darauf, dass die Excel- und Outlook-Anwendung die gleiche Version haben, um Komplikationen zu vermeiden.
  • Verwende die .htmlbody-Eigenschaft, um HTML-Formatierungen in Deinen E-Mails zu nutzen.

FAQ: Häufige Fragen

1. Wie kann ich die E-Mail automatisch senden? Du kannst die Methode .Send anstelle von .Display verwenden, um die E-Mail direkt zu senden.

2. Funktioniert dieser Code in allen Excel-Versionen? Der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte jedoch darauf, dass die Outlook-Version kompatibel ist.

3. Was tun, wenn der Bildinhalt nicht korrekt angezeigt wird? Überprüfe die Einstellungen der Zwischenablage und stelle sicher, dass der Bereich ordnungsgemäß kopiert wurde. Eventuell musst Du die Excel-Anwendung aktivieren, bevor Du den Inhalt kopierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige