Clever-Excel-Forum

Normale Version: E-Mails aus Outlook heraus erstellen?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Bin gerade darauf gestoßen, dass EMails auch aus Excel heraus erstellt werden können.

Aktuell habe ich mir in Outlook ein Makro geschrieben, durch dass mehrere Mails erstellt werden. 
Code:
Public Sub Mailerzeugen()
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "Test@Test.de"
.CC = "test1@test1.de; Test2@Test2.de"
.Subject = "Report " & Format(DateAdd("m", -1, Now), "MMM-YY") & ""
.Body = "Sehr geehrter Herr Tester," & vbLf & "anbei erhalten Sie den aktuellen Monatsreport." & vbLf & vbLf & "Gern können wir dazu telefonieren."

.Display
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "test@test.de"
.CC = "test3@test3.de; test4@test4.de"
.Subject = "Report2 " & Format(DateAdd("m", -1, Now), "MMM-YY") & ""
.Body = "Sehr geehrter Herr Tester 2," & vbLf & "anbei erhalten Sie den aktuellen Monatsreport." & vbLf & vbLf & "Gern stehen wir dazu kurz telefonieren."

.Display
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing

End Sub

Das funktioniert soweit gut.
Das erspart mir dann bei vielen Abteilungen die Arbeit.
Die Mails werden dann geöffnet und ich muss nur noch einen Anhang einfügen.

Diesen Anhang habe ich vorher mit einem Skript in Excel erstellen lassen. Ist eine große Datentabelle. Durch ein Skript werden einzelne Blätter erzeugt und aus der Ursprungstabelle bestimmte Daten in die jeweiligen Abteilungsblätter kopiert.
Danach speichert Excel diese Blätter als einzelne Excel-Dateien in einem Ordner ab.


Leider wird in Outlook bei der Erstellung der Mails die Signatur nicht mit eingefügt. Daran arbeite ich gerade.
Aber die könnte ich notfalls auch in den Body mit reinschreiben. Ist zwar etwas umständlich, aber macht man ja nur einmal.


Jetzt kam ich aber auf die Idee, dies alles nicht in Outlook sondern in Excel zu erledigen.
Arbeit mich da gern rein. Will nur wissen, ob folgende Sachen überhaupt möglich sind.

Würde gern einen Spalte mit Empfänger, eine mit CC und eine mit Betreff haben, die ich anpassen kann. 
Dann eine Spalte, in dem ich den E-Mail-Text eingebe.
Alternativ einen Standarttext, der einen Empfängernamen einfügt.

Dann sollten die Mails nach Ausführung erstellt werden, damit ich noch den Anhang einfügen kann.

Oder ist es sogar möglich, dass Excel den Anhang automatisch zuordnet und einfügt?
Also einmal in eine Mail mit Absender, CC, Betreff und Text packt?


Hoffe ich habe mich nicht zu umständlich ausgedrückt. Mein Kopf brummt gerade etwas.  20

Euch vorab ein angenehmes Wochenende.
Bin jetzt schon etwas weiter.

Excel öffnet mir eine Mail.
Code:
Sheets("Übersicht").Select
Range("A9:A167").copy
Sheets("Abteilung 1").Select
Range("A1").Select
ActiveSheet.Paste
Columns("A:A").AutoFit
Cells(1, 1).Select
Sheets("Übersicht").Select
Range("BN9:CB167").copy
Sheets("Abteilung 1").Select
Range("B1").Select
ActiveSheet.Paste
Columns("B:AF").AutoFit
Cells(1, 1).Select
Rows("19:37").Group
Rows("41:50").Group
Rows("60:60").Group
Rows("63:80").Group
Rows("86:89").Group
Rows("94:111").Group
Rows("114:130").Group
Rows("133:149").Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
Dim olApp     As Object
Dim AWS       As String
Dim olOldbody As String
ActiveWorkbook.Save
AWS = ActiveWorkbook.FullName
Set olApp = CreateObject("Outlook.Application")
    With olApp.CreateItem(0)
              .GetInspector.Display
              olOldbody = .htmlBody
              .To = "test1@test1.de"
              .CC = "Test2@test2.de"
              .Subject = "Test"
              .htmlBody = "Hallo<br><br>Hier ist der aktuelle Bericht.<br><br>" & _
                          "<br><br>Viele Grüße,<br>Max<br><br>" & olOldbody
              .Attachments.Add AWS
    End With

So wird die Mail auch mit Signatur geöffnet.

An sich schon sehr gut für meine Bedürfnisse.

Aber als Anhang wird die gesamte Datei gepackt.
Ich möchte aber nur das einzelne Blatt in die Mail packen.
Hat sich erledigt. Habe einen Weg gefunden. Und die Dateien kann ich händisch in die jeweilige Mail verschieben,
Jetzt wird alles erstellt und die Mails werden geöffnet
Ist eh immer der Standarttext, den keiner liest. :D Daher habe ich ihn in den Code geschrieben.
Verzichte in VBA immer auf:
- 'Select'
- 'Activate'
- verbundene Zellen

Verwende womöglich With  ... End With stattt ObjektVariabelen.
Schreibe mal VBA.

Code:
Sub M_snb()
  with CreateObject("Outlook.Application").CreateItem(0)
    .To = "Test@Test.de"
    .CC = "test1@test1.de; Test2@Test2.de"
    .Subject = "Report " & Format(DateAdd("m", -1, Date), "MMM-YY")
    .Body = replace("Sehr geehrter Herr Tester,~Anbei erhalten Sie den aktuellen Monatsreport.~~Gern
können wir dazu telefonieren.","~",vblf)
    .Send
  end with
End Sub

Schau mal: https://www.snb-vba.eu/VBA_Excelgegevens...html#L_2.3
Hallo,

du hast in VBA Zugriff auf das vollständige Objektmodel von Outlook, egal aus welcher Trägerapplikation heraus. Dein Mail-Makro sollte also ohne weiteres auch in Excel-VBA funktionieren. Für die Signatur habe ich dir im Outlook-Forum schon geantwortet; da brauchst du keinen neuen Thread aufmachen.



Viele Grüße
derHöpp