so müsste es gehn
Christoph
Hi Jutta,
ich hatte dich in deinem ersten Beitrag "Anzahl der Zeilen könnte sich ändern" so verstanden, dass eben in SpalteB mehrere Anhänge pro MailAdresse existieren können.
Nun, da wie du schreibst, es immer nur eine Datei pro mail gibt, mact es den Code etwas einfacher.
(als Zusatz, jetzt noch die Möglichkeit, sich zur Kontrolle einen Kommentar ausgeben zu lassen, wenn du den nicht brauchst, dann lösch die Zeilen einfach wieder)
Mit der Hoffnung, dass es jetzt wie gewünscht läuft
Gruß
Christoph
Option Explicit
Sub SendMessage()
Dim oOL As Object, oOLMsg As Object, oOLRecip As Object, oOLAttach As Object
Dim i As Integer, LRow As Integer
Dim SpAd As Integer, SpAnh As Integer, SpKom As Integer, ZAnf As Integer
Dim strPfad As String
SpAd = 1 'die SpaltenNr., in der die Mailadresse steht (Spalte A = 1, etc)
SpAnh = 2 'die SpaltenNr., in der der Pfad und Dateiname des Mail-Anhangs steht
ZAnf = 2 'die ZeilenNr., in der der erste Eintrag steht (Zeile 1 = i.d.R. die Überschrift)
SpKom = 3 'Zusatz: die SpaltenNr., in die ein Kommentar eingetragen wird
LRow = Cells(Rows.Count, SpAd).End(xlUp).Row
For i = ZAnf To LRow
strPfad = Cells(i, SpAnh).Value
If Dir(strPfad) <> "" Then
Set oOL = CreateObject("Outlook.Application")
Set oOLMsg = oOL.CreateItem(0)
With oOLMsg
Set oOLRecip = .Recipients.Add(Cells(i, SpAd).Value)
Set oOLAttach = .Attachments.Add(Cells(i, SpAnh).Value)
.Subject = Format(Date, "dd.mm.yy") & " - " & Format(Time, "hh:mm:ss")
.Body = "Beiliegend die Excel-Dateien"
.Send
End With
'dies als Zusatz: (Kontrolle, ob an Outlook übergeben wurde)
Cells(i, SpKom).Value = "gesendet " & Format(Date, "dd.mm.yy") & " - " & Format(Time, "hh:mm:ss")
Else: Cells(i, SpKom).Value = "nicht gesendet"
'Ende des Zusatzes.
End If
Next i
Set oOLRecip = Nothing
Set oOLMsg = Nothing
Set oOL = Nothing
End Sub