357 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo, ich war lange nicht in diesem Forum darum vorweg ein Lob an alle die hier die Fragen von uns unwissenden beantworten.

Habe mal wieder ein Anliegen für Makro Programmierung.Ich möchte durch ein Makro zb. die Zeilen ab D1 bis Zeile E (soweit Daten in der Spalte stehen) Kopieren.Dann mein Standard E-Mail-Programm öffnen und das Kopierte einfügen.

E-Mail-Adresse einfügen: Max Mustermann @beispiel.de

E-Mail Betreff einfügen:   Muster

Mit Respekt vor allen die das Programmieren beherrschen und teilen.

Hans

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Hans,

ich hoffe, ich habe dich richtig verstanden. Kopiere das folgende Makro in ein allgemeines Modul deiner Arbeitsmappe:

Sub versenden()
Dim lngLetzte As Long
Dim Nachricht As Object
Dim OutlookApplication As Object
Dim Ablage As DataObject

'Achtung!
'Damit das Makro funktioniert, ist ein Verweis auf die Microsoft Forms 2.0. Object Libary zu setzen:
'- im Visual Basic Editor über
'- Menü Extras / Verweise
'- aus Liste auswählen oder mit "Durchsuchen" finden z.B. unter: C:\WINDOWS\SYSTEM32\FM20.DLL
'- OK drücken
'- VB-Editor schließen
'- Datei speichern

Set Ablage = New DataObject

With ActiveSheet
  'letzte beschrieben Zeile in Spalte E ermitteln
   lngLetzte = .Cells(Rows.Count, 4).End(xlUp).Row
   'Bereich in den Spalten E und D kopieren
   .Range("D1:E" & lngLetzte).Copy
End With

'Outlook-Nachricht generieren
Set OutlookApplication = CreateObject("Outlook.Application")
Set Nachricht = OutlookApplication.CreateItem(0)
With Nachricht
   .To = "Max Mustermann @beispiel.de"
   .Subject = "Muster"
   'Zwischenablage wird eingefügt
   Ablage.GetFromClipboard
   .Body = Ablage.GetText(1)
   'Nachricht anzeigen
   .Display
 End With
 
'Kopierauswahl aufheben
Application.CutCopyMode = False

Set Ablage = Nothing
Set OutlookApplication = Nothing
Set Nachricht = Nothing

End Sub

Beachte, dass vor der Ausführung des Makros der Verweis auf die Microsoft Forms 2.0 object library gesetzt werden muss (siehe Erläuterung im Makro).

Gruß

M.O.

0 Punkte
Beantwortet von flupo Profi (17.7k Punkte)

Ich glaub, dass wird schwierig, weil das Einfügen ja nicht mehr Excel, sondern Outlook steuern muss.

Du kannst es aber insoweit erleichtern, indem du dir einen Hyperlink mit Mailadresse und Betreff erstellst. 

Dann kannst du wenigstens das Kopieren und Aufrufen des Mailformulars per Makro starten:

    Range("A2:A4").Select
    Selection.Copy
    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

Gruß Flupo

0 Punkte
Beantwortet von
Werde es im Laufe des Tages austesten.
Besten Dank für eure Mühe.

Hans
0 Punkte
Beantwortet von
Hallo, Läuft einwandfrei, besten Dank.

Bin erst jetzt zum austesten gekommen.

Ist es möglich die Formatierung aus Excel bei zu behalten!

Hans
0 Punkte
Beantwortet von
Hi

Habe noch ein Anliegen

Wie müsste das Makro für Mozilla Thanderbird aussehen.

Hans
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Hans,

das mit der Formatierung ist nicht so einfach, da die Daten hier aus der Zwischenablage eingefügt werden.

Für den Versand mit Thunderbird probiere mal die folgeden Version:

Sub Thunderbird()
Dim lngLetzte As Long
Dim strMailAufbau As String

With ActiveSheet
  'letzte beschrieben Zeile in Spalte E ermitteln
   lngLetzte = .Cells(Rows.Count, 4).End(xlUp).Row
   'Bereich in den Spalten D und E kopieren
   .Range("D1:E" & lngLetzte).Copy
End With

'Pfad für Thunderbird ggf. anpassen
strMailAufbau = "C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe" & _
                " -compose format=1,preselectid=id1" & _
                ",to='MaxMustermann@beispiel.de',subject='Muster'"
                       
Shell strMailAufbau, vbMaximizedFocus
 
Application.Wait (Now + TimeValue("0:00:03"))
'Zwischenablage mit STRG + V einfügen
SendKeys "^(V)", True
Application.Wait (Now + TimeValue("0:00:01"))

'Kopierauswahl aufheben
Application.CutCopyMode = False

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo M.O

Es läuft auch perfekt mit Thanderbird – Formatierung ist zweitrangig.

Nochmals besten Dank für Deine Hilfe.

Hans
...