AW: VBA SendKeys von Excel zu Outlook Ausf�hrung
18.08.2024 16:28:35
volti
Hallo Jan,
wer suchet, der findet. 👍
Für Deine Zwecke sollte es jedoch eine etwas andere Version sein, da dieses Beispiel eine Einfügung komplett vornimmt und so wie Du es versucht hast, keine Erweiterung zulässt.
Hier zur Erklärung:
Das Beispiel erstellt eine HTML-Mail (.htmlbody) und kann dann nicht mehr mit .body ergänzt werden.
In HTML-Mails gelten HTML-Tags, mit denen man super seinen Text formatieren oder Tabellen kreieren kann.
Heisst aber auch, dass der Zeilenumbruch vbCrLf hier wirkungslos ist und durch &ht;br> ersetzt werden muss.
Der Beispielcode:
Im u.a. Mailbeispiel habe ich den code etwas gerafft. Wenn alles nur auf einem Tabellenblatt steht, braucht man keine zwei WSh-Variablen und m.E. auch keine nur einmal benutzte Variablen Debitor usw..
Der Mailtext kommt mit einem Platzhalter in eine Variable sMailtext, um später die Einfügestelle besser handeln zu können. Ggf. kommt noch die Signatur hinten dran.
Die zu kopierenden Bereiche kommen in ein Array und werden nacheinander eingefügt. Mit der Einfügestelle kann man noch jonglieren, in dem man die Zahl verändert, ggf. auch abhängig vom Schleifendruchlauf.
Eingefügt wird hier der Bereich als Tabelle. Du kannst aber auch bequem mit fast identischem Code die Bereiche als Bilder einfügen.
Probiere mal, ob es so passt....
Code:
Sub Mail_erstellen_ALLES()
' Sendet Mail mit integriertem Bereich(en) als Bereich mit Signatur
Dim WSh As Worksheet, i As Integer
Dim sMailtext As String, sBer() As String
Set WSh = ThisWorkbook.Sheets("RLL Bevorratung Zus.") ' Blatt mit Maildaten und Daten
WSh.Range("S1") = "Debitor " & WSh.Range("E9").Value & " " & WSh.Range("F4").Value _
& " " & WSh.Range("S2")
With CreateObject("Outlook.Application").CreateItem(0)
.Getinspector.Display ' Mail anzeigen, Signatur holen
.Subject = WSh.Range("S1").Value ' Betreff
.To = WSh.Range("W1").Value ' Empfänger
sMailtext = "Hallo,¶" _
& "hier die Daten!¶¶" ' Mailtext
.htmlbody = Replace(sMailtext & .htmlbody, "¶", "<br>") ' In Body incl. Signatur
sBer = Split("D9:M37,C1:C6,B1:D6", ",") ' Datenbereiche <<<anpassen>>>
For i = 0 To UBound(sBer)
WSh.Range(sBer(i)).Copy ' Bereich kopieren
DoEvents
With .Getinspector.WordEditor.Application.Selection
.Start = Len(sMailtext) - 1 + i ' Ggf. jonglieren
.Paste ' Bereich in Mail einfügen
End With
Next i
End With
End Sub
_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz