gundelputz
Goto Top

Email aus Excel 2010 mit VBa versenden

Hallo da draussen,
ich möchte in Excel 2010 eine Email versenden die nur einen Betreff und eine Textnachricht enthält.
Bisher habe ich das so gelöst:

Sheets("Bestellform").Select
Sheets("Bestellform").Copy
ActiveWorkbook.SendMail "xxx.yyyy@abcde.de", "Ersatzteilbestellung"
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True

hier habe ich aber zwei Probleme. Zum einen wird dir ausgewählte Tabelle mitgeschickt und zum anderen möchte ich den Empfänger variabel halten.
Meine Fragen daher sind:
- wie kann ich eine einfache Email versenden die nur einen Betreff und eine Textnachricht enthält?
- wie kann ich die Empfänger variabel gestallten?

Content-ID: 237242

Url: https://administrator.de/forum/email-aus-excel-2010-mit-vba-versenden-237242.html

Ausgedruckt am: 22.12.2024 um 20:12 Uhr

colinardo
Lösung colinardo 06.05.2014 aktualisiert um 10:09:46 Uhr
Goto Top
Hallo Gundelputz,
wenn du Outlook nutzt kannst du es so machen:
Set objOutlook = CreateObject("Outlook.Application")  
Set objMail = objOutlook.CreateItem(0)
With objMail
	.To = "empfänger@email.de"  
	.Subject = "Betreff"  
	.Body = "Dein Body"  

        'Nachricht zur Kontrolle anzeigen  
	.Display

        'Oder direkt senden  
        '.Send  
End With
Falls du kein Outlook verwenden solltest kannst du die Mail auch direkt via CDO verschicken, ein Beispiel-Code dazu findest du hier:
Massen E-Mail-Versand aus VBA Excel - Outlook Sicherheitsmeldung

Grüße Uwe
Gundelputz
Gundelputz 06.05.2014 um 10:11:00 Uhr
Goto Top
Wie immer sind deine Lösungen genau das was ich gesucht habe.
Einfach genial.
Vielen Dank
Gundelputz
Gundelputz 06.05.2014 um 14:16:33 Uhr
Goto Top
Hi Uwe,
eine Frage hab ich noch.
Ich möchte im Body einen Text mit Zeilenumbrüchen schreiben. Dachte eigendlich ich wüsste wie das geht. Habs dann mal so gemacht:

.Body = "Für folgendes Gerät wurde ein Toner bestellt." & _
lbl_maschine_to_an.Caption & _
lbl_sn_to_an.Caption & _
"Sollte dies nicht ihr Gerät sein oder sich der Standortgeändert haben teilen sie mir dieses bitte mit" & _
"Der Toner liegt von Mo. bis Fr. zwischen 7:00 und 11:30 im Lager für sie bereit." & _
"mit freundlichen Grüssen"

Leider ohne Erfolg.
Du kannst mir da bestimmt noch mal helfen.
colinardo
Lösung colinardo 06.05.2014 aktualisiert um 15:01:11 Uhr
Goto Top
verbinde die Zeilen mit vbNewLine:
.Body = "Für folgendes Gerät wurde ein Toner bestellt." & vbNewLine & lbl_maschine_to_an.Caption & vbNewline & .............  
Anstatt vbNewLine lässt sich auch vbCrLf oder chr(13) für Zeilenumbrüche nutzen.

Das was du machst ist nur ein Zeilenumbruch im Quellcode, und nicht im Ausgabestring.
Gundelputz
Gundelputz 06.05.2014 um 15:01:42 Uhr
Goto Top
Vielen Dank noch mal.
JensDND
JensDND 26.04.2016 um 13:00:41 Uhr
Goto Top
Hallo,

ich hänge mich hier mal mit rein face-smile
Wenn ich als "Body" eine selection.copy in die Mail einfügen möchte, wie geht das denn?

LG Jens
colinardo
colinardo 26.04.2016 aktualisiert um 16:42:48 Uhr
Goto Top
Hallo Jens.
Zitat von @JensDND:
ich hänge mich hier mal mit rein face-smile
Sehen wir hier eigentlich nicht so gerne. Normalerweise machen wir hier einen neuen Thread dazu auf, schon im Interesse des TO! Bitte fürs nächste mal berücksichtigen. Merci.
Wenn ich als "Body" eine selection.copy in die Mail einfügen möchte, wie geht das denn?
Zum kopieren der aktuell selektierten Zellen und anschließendes Einfügen der Zwischenablage in eine Mail :
Sub SendMyMail()
    Set objOL = CreateObject("Outlook.Application")  
    ' Neue Mail erstellen  
    Set objMail = objOL.CreateItem(0)
    ' Aktuell markierte Zellen kopieren  
    Selection.Copy
    With objMail
        .Subject = "testmail"  
         ' Zwischenablage einfügen  
        .GetInspector().WordEditor.Range.Paste
        ' Mail anzeigen  
        .Display
    End With
    Set objOL = Nothing
End Sub
Grüße Uwe
JensDND
JensDND 26.04.2016 um 14:20:26 Uhr
Goto Top
Sorry, wird ich mir merken!!
Hat aber einwandfrei geklappt, DANKE!

LG Jens