Clever-Excel-Forum

Normale Version: Anhang mittels Makro über Pfad einer E-Mail beifügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag,

ich bin absoluter Anfänger im Bereich VBA...

Folgendes Problem: ich möchte gerne E-Mails an verschiedene Empfänger mit verschiedenen Anhängen über ein Makro senden.

Der jeweilige Empfänger steht in Worksheets("E-Mail Verzeichnis").Cells(i, 5) -> also Spalte E
Jeweiliger Anhangspfad steht in Worksheets("E-Mail Verzeichnis").Cells(i, 6) -> also Spalte F

Soweit so gut... sollte alles richtig sein, bis auf die Zeile  ".Add Worksheets("E-Mail Verzeichnis").Cells(i, 6)"...
denn wenn ich ein einziges festes Dokument auswähle und an alle schicken will funktioniert es. Nur wird die Schleife eben nicht wie gewollt durchgeführt und für jeden Empfänger der jeweils passende Anhang ausgewählt...

Der Fehler lautet:
Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht.

Folgenden Code habe ich benutzt:


Code:
Sub SendMail2()
   Dim objOutlook As Object
   Dim objMail As Object
   
   For i = 5 To 10
   
   Set objOutlook = CreateObject("Outlook.Application")
   Set objMail = objOutlook.CreateItem(0)
   
   With objMail
       .To = Worksheets("E-Mail Verzeichnis").Cells(i, 5)
       .Subject = "Sitzung vom " & Worksheets("Protokoll").Range("E4").Value
       .Body = Worksheets("E-Mail Verzeichnis").Cells(i, 4) & Chr(13) & _
               Chr(13) & _
               "in der Anlage sende ich Ihnen den Protokollauszug der letzten Sitzung." & Chr(13) & _
               Chr(13) & _
               "Mit freundlichen Grüßen"
       With .Attachments
           .Add Worksheets("E-Mail Verzeichnis").Cells(i, 5)
       End With
       .Send
   End With
           
       Application.StatusBar = "Eine E-Mail wird versendet!"
       
       Set objOutlook = Nothing
       Set objMail = Nothing
     Next i
End Sub


Sieht jemand den Fehler bzw. kann mir weiterhelfen?

Vielen Dank vorab!

Gruß Lars
Hallo Lars,

du schreibst, dass der Pfad im Blatt in Spalte F (6) steht.

Im Code spirchst du dann aber Spalte E (5) an.

Code:
With .Attachments
          .Add Worksheets("E-Mail Verzeichnis").Cells(i, 5)
      End With

Zudem stellt sich die Frage, was denn konkret in .Cells(i, 6) steht. Dort müsste ein kompletter Pfad, inklusive Dateiname, inklusive Dateiendung stehen.

Gruß Werner
Man, bin ich blöd! Jetzt klappt es!!! Vielen Dank!!!

Eine letzte Frage:
Das ganze soll nur unter der Bedingung Spalte G größer als 0 geschehen.

Ist der folgende Befehl korrekt?

 If Worksheets("E-Mail Verzeichnis").Range("i,7").Value > 0 Then

Falls ja, wo und wie pflege ich ihn ein?

Vielen lieben Dank!!!
Hallo,

was sollte unter der Bedingung passieren ... ?

Das Attachment hinzufügen oder die 5 Mails schreiben ?

Etwas genauer solltest du schon sein.
Sorry, da war ich ungenau...

nur dann soll eine E-Mail verfasst werden.

Danke!
Hallo Lars,

so:

Code:
Sub SendMail2()
Dim objOutlook As Object
Dim objMail As Object

For i = 5 To 10
   If Len(Cells(i, 5).Value) Then
   'oder
   'If Cells(i, 5) <> ""
       Set objOutlook = CreateObject("Outlook.Application")
       Set objMail = objOutlook.CreateItem(0)
       
       With objMail
       .To = Worksheets("E-Mail Verzeichnis").Cells(i, 5)
       .Subject = "Sitzung vom " & Worksheets("Protokoll").Range("E4").Value
       .Body = Worksheets("E-Mail Verzeichnis").Cells(i, 4) & Chr(13) & _
               Chr(13) & _
               "in der Anlage sende ich Ihnen den Protokollauszug der letzten Sitzung." & Chr(13) & _
               Chr(13) & _
               "Mit freundlichen Grüßen"
       With .Attachments
           .Add Worksheets("E-Mail Verzeichnis").Cells(i, 6)
       End With
       .Send
       End With
           
       Application.StatusBar = "Eine E-Mail wird versendet!"
       
       Set objOutlook = Nothing
       Set objMail = Nothing
   End If
Next i
End Sub


Gruß Werner