Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Emails an div Empfänger m. div Anlagen

Emails an div Empfänger m. div Anlagen
Jutta
Hallo,
ich möchte noch einmal um Eure Hilfe bitten, da ich leider kaum Ahnung von VBA habe.
Ist es wohl möglich, automatisch Emails mit immer dem gleichen Text, aber mit Anlage einer jeweils anderen Arbeitsmappe an diverse Empfänger zu senden, wenn die jeweilige Datei im Verzeichnis c:\tmp vorhanden ist, sonst nicht ?
(Die Email-Adressen stehen in einer Tabelle in Spalte A, Dateinamen in Spalte B, Anzahl der Zeilen könnte sich ändern.)
Vielen Dank schonmal im voraus.
Gruss
Jutta
AW: Emails an div Empfänger m. div Anlagen
Bernd
Hallo Jutta,
schau mal auf die Homepage von Rainer (Ramses), dort findest du einige Beispiele, die dir vielleicht helfen können.
http://www.office.gmxhome.de/_excel_outlook.htm
Userbild
herber.de .......alles andere ist "schnulli, bulli"...
...um mit den Worten eines berühmten Sportreporters zu enden.
AW: Emails an div Empfänger m. div Anlagen
Christoph
Hi Jutta,
mal ein gutes Beispiel von Hans: https://www.herber.de/mailing/121100h.htm
Die MailAdresse steht in "E1" in der Form: ich@zuhause.de
Die Anhänge stehn in A2 bis A.. in der Form: D:\Test1\Mappe1.xls
Das lässt sich natürlich erweitern auf mehrere EMail-Adressen, ebenso auf andere Spalten anwenden.
Mit dem Eintrag:
On Error Resume Next
vor der Zeile:
iRow = 2
Do Until IsEmpty(Cells(iRow, 1))
...
würdest du die Mail auch senden, wenn eine oder alle der angegebenen Dateien nicht vorhanden ist.
Gruß
Christoph

Sub SendMessage()
'Quelle: <a href="https://www.herber.de/mailing/121100h.htm">https://www.herber.de/mailing/121100h.htm</a>
Dim oOL As Object
Dim oOLMsg As Object
Dim oOLRecip As Object
Dim oOLAttach As Object
Dim iRow As Integer
Set oOL = CreateObject("Outlook.Application")
Set oOLMsg = oOL.CreateItem(0)
With oOLMsg
Set oOLRecip = .Recipients.Add(Range("E1").Value)
iRow = 2
Do Until IsEmpty(Cells(iRow, 1))
Set oOLAttach = .Attachments.Add(Cells(iRow, 1).Value)
iRow = iRow + 1
Loop
.Subject = Format(Date, "dd.mm.yy") & " - " & Format(Time, "hh:mm:ss")
.Body = "Beiliegend die Excel-Dateien"
.Send
End With
Set oOLRecip = Nothing
Set oOLMsg = Nothing
Set oOL = Nothing
End 

Sub

Anzeige
AW: Emails an div Empfänger m. div Anlagen
Jutta
Hallo,
vielen Dank für die schnellen Antworten.
Bernd, da hab ich schon geguggt, bin aber leider zu dumm es anzupassen.
Christoph, vielen Dank, das werd ich sofort ausprobieren !
Gruss,
Jutta
AW: Emails an div Empfänger m. div Anlagen
Jutta
Hallo Christoph,
ich bekomme es einfach nicht hin. Das mit den Dateien klappt, aber alle gehen nur an
an den ersten Empfänger in E1. Kannst Du mir bitte noch einen Hinweis geben ?
Danke im voraus,
Jutta
AW: Emails an div Empfänger m. div Anlagen
24.03.2004 12:41:13
Jutta
Hallo noch einmal,
ich habe es jetzt mit diesem Beispiel "https://www.herber.de/mailing/109400h.htm" versucht. Klapp soweit gut. Es werden aber auch Mails versendet, wenn die Datei nicht vorliegt. Wie kann ich das verhindern ?
Kann mir dazu jemand einen Tip geben ? Vielen Dank im voraus.
Gruss aus Göttingen,
Jutta
Anzeige
AW: Emails an div Empfänger m. div Anlagen
Christoph
hallo Jutta,
ich hab die erste Datei mal soweit auf deine Bedürfnisse angepasst:
siehe:
https://www.herber.de/bbs/user/4618.xls
mit der Hoffnung, dir geholfen zu haben
Gruß
Christoph
('ne Rückmeldung wäre nett)
und hier der Code:

Sub SendMessage()
Dim oOL As Object
Dim oOLMsg As Object
Dim oOLRecip As Object
Dim oOLAttach As Object
Dim iRow As Integer, i As Integer, LRow As Integer
LRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To LRow
If Cells(i, 1) <> "" Then
Set oOL = CreateObject("Outlook.Application")
Set oOLMsg = oOL.CreateItem(0)
With oOLMsg
Set oOLRecip = .Recipients.Add(Cells(i, 1).Value)
On Error Resume Next
Set oOLAttach = .Attachments.Add(Cells(i, 2).Value)
For iRow = i + 1 To LRow
If Cells(iRow, 1) = "" And Cells(iRow, 2) <> "" Then
Set oOLAttach = .Attachments.Add(Cells(iRow, 2).Value)
ElseIf Cells(iRow, 1) <> "" Then Exit For
End If
Next iRow
.Subject = Format(Date, "dd.mm.yy") & " - " & Format(Time, "hh:mm:ss")
.Body = "Beiliegend die Excel-Dateien"
.Send
End With
End If
i = iRow - 1
Next i
Set oOLRecip = Nothing
Set oOLMsg = Nothing
Set oOL = Nothing
End Sub

Anzeige
AW: Emails an div Empfänger m. div Anlagen
jutta
Hallo Christoph,
vielen Dank. Funktioniert prima. Kann man wohl jetzt noch einbauen, daß keine Mail verschickt wird, wenn eine Datei nicht vorhanden ist ? Bei Deinem Beispiel wird dann eine Datei ohne Anhang versendet.
Ich danke Dir schon mal im voraus,
Jutta
AW: Emails an div Empfänger m. div Anlagen
Christoph
Hi Jutta,
wie sieht deine Datei den aus?
hast du so wie in meinem Beispiel mehrere Anhänge pro Empfänger in der Spalte B stehen?
Soll die Mail nur dann nicht versendet werden, wenn kein Eintrag in SpalteB zur Adresse in Spalte A existiert?
Oder nur dann, wenn der Dateiname in Spalte B falsch ist, und es keine weitere Datei zu diesem Empfänger in Spalte B gibt?
Oder beides?
oder...oder..oder...
Gruß
Christoph
Anzeige
AW: Emails an div Empfänger m. div Anlagen
jutta
Hallo Christoph,
ich hab Deine Datei an meine Vorstellungen angepasst, d.h. in Spalte A stehen die Email-Empfänger, in der Spalte B die Dateinamen.
z.B.
Spalte A, Zeile 1: alf@melmac.de / Spalte B, Zeile 1: c:\tmp\alf.xls
Spalte A, Zeile 2: darth@vader.de / Spalte B, Zeile 2: c:\tmp\darth.xls
Spalte A, Zeile 3: irgend@was.de / Spalte B, Zeile 3: c:\tmp\irgend.xls
Die Dateien werden je nach Inhalt automatisch erzeugt, es kann also sein, daß u.U. die Datei "darth.xls" mal nicht im Verzeichnis vorhanden ist. Dann soll auch keine Mail an darth@vader.de rausgehen. (s. auch meine ursprünglich erste Frage.)
Es gibt also immer nur einen Anhang pro Empfänger. Die Dateinamen stehen immer in Spalte B, auch wenn sie nicht mal nicht im Verzeichnis c:\tmp vorhanden sind.
Ich hoffe, Du kannst mit meinen Erklärungen etwas anfangen, so langsam werd ich wirr ;-)
Gruss,
Jutta
Anzeige
ich kümmer mich drum
Christoph
Hi Jutta,
werde aber erst gegen Abend dazu kommen
Gruß
Christoph
AW: ich kümmer mich drum
24.03.2004 15:35:51
jutta
Danke Christoph,
das ist lieb von Dir. Ich bin jetzt zu Hause und kann hier leider ohnehin nix testen, weil kein Excel vorhanden ist...
*wink*
Jutta
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

Anzeige
AW: so müsste es gehn
24.03.2004 17:21:50
Jutta
Hallo Christoph,
sorry, daß ich Dir so viel Arbeit gemacht habe. Das liest sich jedenfalls schonmal ganz gut :-). Ich werde es morgen früh gleich als erstes testen und melde mich dann nochmal.
Tschüss und Dir noch einen schönen Abend,
Jutta
Danke !!!
Jutta
Guten Morgen Christoph,
das Makro läuft super ! Noch einmal ganz herzlichen Dank für Deine Mühe !
Viele Grüsse aus Göttingen,
Jutta
Danke für die Rückmeldung
25.03.2004 09:15:29
Christoph
Hi Jutta,
es freut mich dir geholfen zu haben,
Gruß Christoph

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige