Hühner sind das ökonomischste Lebensmittel überhaupt, denn man kann sie vor ihrer Geburt und nach ihrem Tod essen.

Man muss immer aufpassen! Ganz genau hinschauen! Mal eben schnell – das geht einfach nicht!

Ich wollte nur „mal schnell etwas probieren“. Mehrere Mails über Outlook aus Excelversenden an die Mailadresse, die in einer Liste stehen.

Also mal schnell etwas Code getippt (mit einem Verweis auf die Microsoft Outlook-Bibliothek):

Sub MailVersenden()
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
    Dim i As Integer
    
    Set olApp = New Outlook.Application
    Set olMail = olApp.CreateItem(olMailItem)
    
    For i = 2 To Range("A1").CurrentRegion.Rows.Count
        With olMail
            .To = Range("B" & i).Value
            .Subject = "Diese Mail ist völlig überflüssig"
            .Body = "Hallo " & Range("A" & i).Value & "," & vbCr & vbCr & "Nicht wundern - das ist nur eine Testmail" & vbCr & vbCr & "Gruß"
            .Send
        End With
    Next i
    
End Sub

Und der Test – liefert einen Fehler. Bei der ZWEITEN Mail:

Outlook kennt mindestens einen Namen nicht.

Seltsam! Hinschauen – überlegen – stimmt:

Ich muss INNERHALB der Schleife eine neue Mail erzeugen – das heißt: für jede Zeile wird eine neue Mail versenden:

Sub MailVersenden()
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
    Dim i As Integer
    
    Set olApp = New Outlook.Application

    For i = 2 To Range("A1").CurrentRegion.Rows.Count
        Set olMail = olApp.CreateItem(olMailItem)
        With olMail
            .To = Range("B" & i).Value
            .Subject = "Diese Mail ist völlig überflüssig"
            .Body = "Hallo " & Range("A" & i).Value & "," & vbCr & vbCr & "Nicht wundern - das ist nur eine Testmail" & vbCr & vbCr & "Gruß"
            .Send
        End With
    Next i
    
End Sub

DANN funktioniert es auch. Beim nächsten Mal – halt nicht so schnell!