Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Anhang mittels Makro über Pfad einer E-Mail beifügen
#1
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
Antwortento top
#2
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
[-] Folgende(r) 1 Benutzer sagt Danke an Werner.M für diesen Beitrag:
  • Lars1904
Antwortento top
#3
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!!!
Antwortento top
#4
Hallo,

was sollte unter der Bedingung passieren ... ?

Das Attachment hinzufügen oder die 5 Mails schreiben ?

Etwas genauer solltest du schon sein.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Benutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • Lars1904
Antwortento top
#5
Sorry, da war ich ungenau...

nur dann soll eine E-Mail verfasst werden.

Danke!
Antwortento top
#6
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
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste