per Excel Makro, E-Mail generieren und mit Inhalt füllen
Es soll in Excel per Makro (Button) eine E-Mail generieren und mit einem vorher definierten Bereich des Dokumentes gefüllt werden.
Guten Abend zusammen,
ich arbeite im moment an einem Excel Makro, welches "bei Klick" eine neue E-Mail (Outlook) öffnen und danach mit einem bestimmten Bereich des Excel-Dokuments füllen soll. Soweit so gut funktioniert zumindest schon einmal der Teil mit der E-Mail und der Auswahl des Bereiches nur bei dem Teil, wie ich diesen Bereich in die E-Mail bekomme, könnte ich Hilfe gebrauchen *g*.
Hier erst einmal der bisherige Code:
Da wo im Moment "test" steht soll dann der Inhalt der Range("A1:H45") stehen, nur hat bisher keiner meiner Befehle funktioniert. Ich hoffe Ihr könnt mir hier einen Tipp geben.
Als zweites wollte ich (wenn möglich) nach versenden der E-Mail einen zweiten Bereich (Range("A7:H45")) leeren/löschen.
Ist es möglich diesen Befehl mit dem senden der E-Mail zu verknüpfen?
Habt schon mal vielen Dank für Eure Hilfe
MfG Hesperus
Guten Abend zusammen,
ich arbeite im moment an einem Excel Makro, welches "bei Klick" eine neue E-Mail (Outlook) öffnen und danach mit einem bestimmten Bereich des Excel-Dokuments füllen soll. Soweit so gut funktioniert zumindest schon einmal der Teil mit der E-Mail und der Auswahl des Bereiches nur bei dem Teil, wie ich diesen Bereich in die E-Mail bekomme, könnte ich Hilfe gebrauchen *g*.
Hier erst einmal der bisherige Code:
Private Sub Bestellung_Click()
Range("A1:H45").Select
Selection.Copy
Dim ol, mail As Object
Set ol = CreateObject("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.Subject = "Bestellung " & Now
mail.To = "Max.Mustermann@test.uk"
mail.cc = "Max.Mustermann@test.uk"
'mail.bcc = ""
mail.body = "test"
'Mail anzeigen
mail.Display
End Sub"
Da wo im Moment "test" steht soll dann der Inhalt der Range("A1:H45") stehen, nur hat bisher keiner meiner Befehle funktioniert. Ich hoffe Ihr könnt mir hier einen Tipp geben.
Als zweites wollte ich (wenn möglich) nach versenden der E-Mail einen zweiten Bereich (Range("A7:H45")) leeren/löschen.
Ist es möglich diesen Befehl mit dem senden der E-Mail zu verknüpfen?
Habt schon mal vielen Dank für Eure Hilfe
MfG Hesperus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126592
Url: https://administrator.de/contentid/126592
Ausgedruckt am: 24.11.2024 um 19:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Hesperus!
Also mit Text bekommst Du keine vernünftige Tabellenansicht hin. Aufgrund der unterschiedlichen Zeichenbreiten nützt es auch nichts, eine bestimmte Spaltenbreite mit Leerzeichen zu erzeugen.
Alternativ kannst Du mal diesen Code testen. Er erzeugt eine Tabelle im HTML-Format und funktioniert zumindest mit Outlook Express.
Die Konstanten entsprechend anpassen:
Gruß Dieter
Also mit Text bekommst Du keine vernünftige Tabellenansicht hin. Aufgrund der unterschiedlichen Zeichenbreiten nützt es auch nichts, eine bestimmte Spaltenbreite mit Leerzeichen zu erzeugen.
Alternativ kannst Du mal diesen Code testen. Er erzeugt eine Tabelle im HTML-Format und funktioniert zumindest mit Outlook Express.
Die Konstanten entsprechend anpassen:
Option Explicit
Const SheetName = "Tabelle1" 'Tabellenname
Const BegZeile = 1 'Zeile 1
Const EndZeile = 45 'Zeile 45
Const BegSpalte = 1 'Spalte A
Const EndSpalte = 8 'Spalte H
Const DelRange = "A7:H45" 'Inhalte löschen
Private Sub Bestellung_Click()
Dim appMail As Object
Set appMail = CreateObject("Outlook.Application").CreateItem(0)
With appMail
.Subject = "Bestellung " & Now
.To = "Max.Mustermann@test.uk"
.cc = "Max.Mustermann@test.uk"
.HTMLbody = GetHtmlBodyText()
.Display
End With
Set appMail = Nothing
End Sub
Private Function GetHtmlBodyText() As String
Dim Wks As Worksheet, Text As String, c As Integer, r As Integer
Set Wks = Sheets(SheetName)
Text = "<DIV>" & vbCrLf
Text = Text & "<TABLE cellSpacing=0 cellPadding=0 width=""100%"" border=1>" & vbCrLf
Text = Text & "<TBODY>" & vbCrLf
For r = BegZeile To EndZeile
Text = Text & "<TR>" & vbCrLf
For c = BegSpalte To EndSpalte
Text = Text & "<TD>" & Wks.Cells(r, c) & "</TD>" & vbCrLf
Next
Text = Text & "</TR>" & vbCrLf
Next
Text = Text & "</TBODY></TABLE></DIV>" & vbCrLf
'Löschen (Formate bleiben erhalten)
'Wks.Range(DelRange).ClearContents
GetHtmlBodyText = Text
End Function
Gruß Dieter
Hallo Hesperus!
Freut mich zu hören, dass es nach Deinen Wünschen funktioniert
Falls Du die Tabellenansicht etwas verschönern möchtest, dann ändere mal in Zeile 33 die Werte für "cellSpacing=0" z.B. in 1, 2.
Auch Dir ein schönes WE
Gruß Dieter
Freut mich zu hören, dass es nach Deinen Wünschen funktioniert
Falls Du die Tabellenansicht etwas verschönern möchtest, dann ändere mal in Zeile 33 die Werte für "cellSpacing=0" z.B. in 1, 2.
Auch Dir ein schönes WE
Gruß Dieter