Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA SendKeys von Excel zu Outlook Ausführung

VBA SendKeys von Excel zu Outlook Ausführung
14.08.2024 08:55:19
Jan
Guten Tag zusammen,

ich habe einen VBA Code, welcher von Excel aus in Outlook eine Mail erstellt und über SendKeys das zuvor kopierte per VBA reinkopiert.
Das funktioniert auch genau so, wie ich es möchte.

Nun möchte ich aber einen zweiten Part kopieren. (Der Code ist auch bereits vorhanden und funktioniert alleine auch so, wie es sein soll)

Wenn ich nun versuche, die beiden Parts im EXCEL VBA zu verknüpfen, wird nur der zweite Part zweimal kopiert.

Gelesen habe ich inzwischen, dass der Puffer bei Aktivierung ausgelesen wird.

Wie kann ich in der fokussierten Mail, Excel über VBA dazu bewegen, den Puffer aus zu lesen?

Viele Grüße aus Hamburg

Jan
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objekte, nicht "SendKey"
14.08.2024 09:08:02
Fennek
Hallo,

innerhalb des Office-Paketes kann auch der Übergang von Excel zu Outlook per Objecte programmiert werden. Das ist besser, einfacher und stabiler.

mfg
AW: VBA SendKeys von Excel zu Outlook Ausführung
14.08.2024 10:46:21
Volti
Hallo Jan,
SendKeys würde ich nicht verwenden,
sondern Wordeditor.paste oder range2html usw , je nachdem was genau du einfügen möchtest.

Hierzu gibt es zig Beispiele, auch von mir, in diversen Foren, auch hier in Herber.

Falls du gar nicht weiterkommen solltest, zeig hier mal deinen bisherigen Code.
Gruß Karl-Heinz
Anzeige
AW: VBA SendKeys von Excel zu Outlook Ausführung
15.08.2024 12:15:10
Jan
Hallo Fennek,
Hallo Karl-Heinz,

Danke für euer Feedback.

Ich muss mich da mal schlau machen, mit den Objekten.
Sollte ich noch Fragen haben, komme ich auf euch zu.

Viele Grüße
Jan
AW: VBA SendKeys von Excel zu Outlook Ausf�hrung
18.08.2024 14:10:12
Jan
Hallo Karl-Heinz,

ich habe nun folgenden Code, welcher super funktioniert:
(von Dir ;-) ) https://www.herber.de/forum/archiv/1896to1900/1897718_Bereich_als_EMail_versenden.html

Ich möchte nun noch einen Zeilensprung (Return) davor und danach einfügen, weil ich mehrere solcher Bereiche in die Mail einfügen möchte.
Hier komme ich aber nicht weiter. Hast Du da einen Tipp für mich?
(Hatte .Body = VbCrLf eingefügt, aber da lösche er das eingefügte)

Danke und viele Grüße

Jan

Sub Mail_erstellen_ALLES()

' Sendet Mail mit integriertem Bereich als Bereich ohne Signatur
Dim WSh1 As Worksheet, WSh2 As Worksheet
Dim sBer As String

sBer = "D9:M37" ' Kopierbereich
Set WSh1 = ThisWorkbook.Sheets("RLL Bevorratung Zus.") ' Blatt mit Maildaten
Set WSh2 = ThisWorkbook.Sheets("RLL Bevorratung Zus.") ' Datenblatt

Debitor = Range("E9").Value
DebitorName = Range("F4").Value
Range("S1") = "Debitor " & Debitor & " " & DebitorName & " " & Range("S2")

WSh2.Range(sBer).Copy ' Bereich kopieren

With CreateObject("Outlook.Application").CreateItem(0)
.BodyFormat = 2 ' 2=HTML-Format
.Subject = WSh1.Range("S1").Value ' Betreff
.To = WSh1.Range("W1").Value ' Empfänger
.Display

.GetInspector.WordEditor.Range.Paste ' Bereich in Mail einfügen

End With

End Sub


Anzeige
AW: VBA SendKeys von Excel zu Outlook Ausf�hrung
18.08.2024 16:28:35
volti
Hallo Jan,

wer suchet, der findet. 👍

F&uumlr Deine Zwecke sollte es jedoch eine etwas andere Version sein, da dieses Beispiel eine Einf&uumlgung komplett vornimmt und so wie Du es versucht hast, keine Erweiterung zul&aumlsst.

Hier zur Erkl&aumlrung:
Das Beispiel erstellt eine HTML-Mail (.htmlbody) und kann dann nicht mehr mit .body erg&aumlnzt 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&aumlter die Einf&uumlgestelle besser handeln zu k&oumlnnen. Ggf. kommt noch die Signatur hinten dran.
Die zu kopierenden Bereiche kommen in ein Array und werden nacheinander eingef&uumlgt. Mit der Einf&uumlgestelle kann man noch jonglieren, in dem man die Zahl ver&aumlndert, ggf. auch abh&aumlngig vom Schleifendruchlauf.

Eingefügt wird hier der Bereich als Tabelle. Du kannst aber auch bequem mit fast identischem Code die Bereiche als Bilder einf&uumlgen.

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
Anzeige
AW: VBA SendKeys von Excel zu Outlook Ausf�hrung
18.08.2024 16:38:19
volti
Geht natürlich auch ohne HTML-Mail.....

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," & vbLf & "hier die Daten!" & vbLf ' Mailtext .body = sMailtext & .body ' 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) ' Ggf. jonglieren .Paste ' Bereich in Mail einfügen End With Next i End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz
Anzeige
AW: VBA SendKeys von Excel zu Outlook Ausf�hrung
19.08.2024 17:01:56
Jan
Hallo Karl-Heinz,

der Code funktioniert soweit sehr und schnell.

Den Wert bei .Start habe ich auf 803 angepasst.

Die Bereiche, welche kopiert werden sollen, sind tatsächlich auf verschiedenen Tabellenblätter.
Kann ich bei Split() auch mit verschiedenen Blättern arbeiten?

Viele Grüße

Jan
Anzeige
AW: VBA SendKeys von Excel zu Outlook Ausf�hrung
20.08.2024 14:33:18
Jan
Hallo Karl-Heinz,

Dein Code hat mich nun auf den richtigen Weg geführt.

Auch wenn ich nun etwas mehr Code habe (habe die 4 verschiedene Bereiche jeweils einzeln als Code eingebracht), funktioniert es super.

Danke Dir und viele Grüße aus Hamburg

Jan

AW: VBA SendKeys von Excel zu Outlook Ausf�hrung
20.08.2024 14:55:20
Volti
Gerne
Gruß KH
Anzeige
AW: VBA SendKeys von Excel zu Outlook Ausf�hrung
19.08.2024 17:03:40
Jan
Habe die Version ohne HTML genommen ;-)
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige