# [Excel] Tabelleninhalt Zeilenweise per E-Mail versenden



## Ultraflip (24. August 2011)

Hallo Forum,

um Datensätze die in Excel geliefert werden besser verarbeiten zu können, würde ich gerne gelieferte Tabellen mit Zeilenweise Datensätzen an ein Postfach einzeln schicken lassen.

Also soll von einer Tabelle mit z. B. 10 Spalten und 20 Zeilen nach Klick auf einen Button(oder Tastenkombination, etc.) 20 Mails generiert und an immer das gleiche Postfach gesendet werden, die im Inhalt die 10 Werte enthalten (im Bestcase auch noch eine Erklärung) also z. B.:

Mailinhalt
_Beschreibung 1: [Zeile 1, Spalte 1]
Beschreibung 2: [Zeile 1, Spalte 2]
Beschreibung 3: [Zeile 1, Spalte 3]
etc._

Die Zeilenanzahl variiert immer.

Im Netz habe ich folgendes Beispiel gefunden:
http://www.office.gmxhome.de/_excel_outlook.htm#Serienmail_ohne_Attachment

Leider schaffe ich nicht, dass nach meinen Bedürfnissen anzupassen 

Kann mir hier jemand weiterhelfen?

Vielen Dank und LG
Ultraflip


----------



## tombe (24. August 2011)

Wie weit hast du es denn zum Laufen gekriegt bzw. was klappt bei dir nicht.

Hier sind auch noch ein paar Beispiele wie man mit Excel Mails verschicken kann, vielleicht kommst du damit ja besser klar.


----------



## Ultraflip (30. August 2011)

Hallo zusammen,

soweit so gut. Folgendes Makro läuft schon perfekt:


```
Sub Excel_Serienmail_via_Outlook_Senden()
    Dim OutApp As Object, Mail As Object
    Dim i As Integer
    Dim Nachricht
    Dim AnzahlZeilen As Integer
    AnzahlZeilen = Range("A65536").End(xlUp).Row
    For i = 2 To AnzahlZeilen
    'Variablen müssen bei jeder Schleife neu initalisiert werden
        Set OutApp = CreateObject("Outlook.Application")
        Set Nachricht = OutApp.CreateItem(0)
        With Nachricht
            .To = "test@test.de" 'Adresse"
            .Subject = Cells(i, 1) 'Betreffzeile
            .Body = Cells(1, 2) + ": " + Cells(i, 2) + Chr(10) + Cells(1, 3) + ": " + Cells(i, 3)   'Sendetext"
            .Display
            SendKeys "%s", True
        End With
        'Variablen zurücksetzen sonst gehts nicht
        Set OutApp = Nothing 'CreateObject("Outlook.Application")
        Set Nachricht = Nothing 'OutApp.CreateItem(0)
        Application.Wait (Now + TimeValue("0:00:03"))
    Next i
End Sub
```

Einmal "schöner Wohnen" ist aber noch offen: Ich würde gerne die Zeilen im Body durch eine Schleife erstellen lassen (also mit einer Schleife in der Schleife).

Beispiel mit Zählvariable "k" für die Spalten:

```
For k = 2 To AnzahlSpalten
 .Body = Cells(1, k) + ": " + Cells(i, k) + Chr(10)
```

Um die Anzahl der Spalten zu ermitteln würde ich


```
Dim AnzahlSpalten As Integer
    AnzahlSpalten = Cells(1, Columns.Count).End(xlToLeft).Column
```

benutzen. Aber wie bekomme ich das ganze noch in den Mail-Body? Evtl. über eine Funktion? 

Vielen Dank und LG
Ultraflip


----------

