hesperus
Goto Top

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:

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

Content-ID: 126592

Url: https://administrator.de/contentid/126592

Ausgedruckt am: 24.11.2024 um 19:11 Uhr

godlie
godlie 07.10.2009 um 11:41:55 Uhr
Goto Top
Hallo,

naja so einfach mit der Range geht das leider nicht.
Was dir evlt. helfen kann ist es wenn du mit VBA die Zwischenablage ausliest und diese dann einfügst in den Body der Email.
Hesperus
Hesperus 07.10.2009 um 12:06:07 Uhr
Goto Top
Hallo godlie,

genau so hatte ich mir das Vorgestellt, nur fehlt mir dafür der ensprechende Befehl. Alles was ich bisher ausprobiert habe ist auf Fehler gelaufen.

Vielleicht kannst du mir da einen Tipp geben wie es aussehen könnte.

Vielen Dank
Hesperus
76109
76109 07.10.2009 um 17:42:58 Uhr
Goto Top
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:
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
Hesperus
Hesperus 09.10.2009 um 08:00:56 Uhr
Goto Top
Hallo Dieter,

der Code funktioniert genau so wie ich mir das vorgestellt habe. Hab vielen Dank für deine Hilfe.

Schönes WE
LG Hesperus
76109
76109 09.10.2009 um 09:29:49 Uhr
Goto Top
Hallo Hesperus!

Freut mich zu hören, dass es nach Deinen Wünschen funktioniertface-smile

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
togreiner
togreiner 11.02.2011 um 09:40:38 Uhr
Goto Top
Hallo,
gibt es diese Exceldatei final ? Ich brauch dringend etwas ähnliches, habe aber keine Kenntnisse in der Programierung

t.