Excel Serienbrief VBA mit Standardtext und Anhang
Hallo Leute,
ich habe folgendes Problem:
Ich habe eine Excel Datei mit mehreren Mail Adressen.
Diese sollen alle eine Mail erhalten mit jeweils einem Standardtext und Standard Betreff.
Der Text und Betreff ist für alle Empfänger der gleiche.
Soweit so gut. Habe ich noch hinbekommen (zumindest an eine Adresse).
Nun soll jedem Empfänger (jeder Mail-Adresse) ein individueller Anhang (PDF) angehängt werden.
Dies übersteigt meine VBA Kenntnisse leider völligst.
Wie schicke ich die Mail an alle Adressen von Spalte AD2 bis AD_letzer Wert?
Wie verknüpfe ich jeweils eine PDF Datei mit einer der vorhandenen Mails?
Bisher sieht mein Skript folgt aus (funktioniert auch: schickt dem Empfänger aus AD213 eine Mail mit Text und Betreff und der angehängten Datei "Datei.txt"):
Sub LotusMail(Empfaenger As String, Dateianhang As String, Inhalt As String)
Dim Kopie_Empfänger As String, BlindKopie_Empfänger As String, Betreff As String
Const EMBED_ATTACHMENT = 1454
Dim server As String, mailfile As String
Dim session As Object
Dim DB As Object
Dim doc As Object
Dim rtitem As Object
Dim EmbeddedObject As Object
' Auslesen der Mail-DB
Set session = CreateObject("Notes.NotesSession")
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set DB = session.GETDATABASE(server, mailfile)
Set doc = DB.CreateDocument()
doc.Form = "Main Topic"
doc.SendTo = Empfaenger ' Adressaten übergeben
' doc.CopyTo = Me.Kopie_Empfänger.Value
' doc.BlindCopyTo = Me.BlindKopie_Empfänger.Value
doc.Subject = "Standardbetreff!" ' Betreff hier festlegen
doc.Body = Inhalt
Dateianhang = "C:\Datei.txt"
Set rtitem = doc.CREATERICHTEXTITEM("ProjectDescription")
Set EmbeddedObject = rtitem.EMBEDOBJECT(EMBED_ATTACHMENT, "", Dateianhang) 'Dateianhang mit Pfad und Dateiname überschreiben
'doc.SIGN = "0"
'doc.ENCRYPT = "0"
'doc.BlindCopyTo = ""
'doc.DefaultMailSaveOptions = 0 '"1"
'doc.MailSaveOptions = 0 '"1"
'doc.DeliveryReport = "B"
'doc.MailOptions = "2" '"0"/*-*--*//**/
'doc.Importance = "1" ' Neu
'doc.logo = "Barmenia" 'neu
'doc.ReturnReceipt = "1"
doc.principal = session.UserName
doc.viewicon = "75"
doc.FROM = session.UserName ' Von Zeile = Aktueller Benutzer
' doc.SaveOptions = 0 '"1"
' doc.SecureMail = ""
' doc.SenderTag = "F"
'SMTP-Originator
doc.PostedDate = Format$(Now, "dd.mm.yyyy") + " " + Format$(Now, "hh:nn:ss")
' doc.SAVEMESSAGEONSEND = 0
' Call doc.Save(False, False)
Call doc.Send(True, "")
Set doc = Nothing
Set DB = Nothing
End Sub
Sub Mail_Senden()
Dim Cell As Range
Call LotusMail(Range("AD213"), "", "Standardtext")
'Für jede Zelle in Bereich d2 bis zur letzen belegten Zelle in Spalte d wird eine Mail versandt.
' For Each Cell In Range("AD213:AD" & Cells(Rows.Count, "AD").End(xlUp).Row)
' If Cell <> "" Then Call LotusMail(Cell.Value, "", Cell(1, -2) & " " & Cell(1, -1) & " " & Cell(1, 0) & "," & Range("g2").Text & Cell(1, 2) & Range("h2").Text)
' Next
End Sub
Gibt es für so eine Anwendung evtl. auch Freeware?
Grüße
xfiles
ich habe folgendes Problem:
Ich habe eine Excel Datei mit mehreren Mail Adressen.
Diese sollen alle eine Mail erhalten mit jeweils einem Standardtext und Standard Betreff.
Der Text und Betreff ist für alle Empfänger der gleiche.
Soweit so gut. Habe ich noch hinbekommen (zumindest an eine Adresse).
Nun soll jedem Empfänger (jeder Mail-Adresse) ein individueller Anhang (PDF) angehängt werden.
Dies übersteigt meine VBA Kenntnisse leider völligst.
Wie schicke ich die Mail an alle Adressen von Spalte AD2 bis AD_letzer Wert?
Wie verknüpfe ich jeweils eine PDF Datei mit einer der vorhandenen Mails?
Bisher sieht mein Skript folgt aus (funktioniert auch: schickt dem Empfänger aus AD213 eine Mail mit Text und Betreff und der angehängten Datei "Datei.txt"):
Sub LotusMail(Empfaenger As String, Dateianhang As String, Inhalt As String)
Dim Kopie_Empfänger As String, BlindKopie_Empfänger As String, Betreff As String
Const EMBED_ATTACHMENT = 1454
Dim server As String, mailfile As String
Dim session As Object
Dim DB As Object
Dim doc As Object
Dim rtitem As Object
Dim EmbeddedObject As Object
' Auslesen der Mail-DB
Set session = CreateObject("Notes.NotesSession")
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set DB = session.GETDATABASE(server, mailfile)
Set doc = DB.CreateDocument()
doc.Form = "Main Topic"
doc.SendTo = Empfaenger ' Adressaten übergeben
' doc.CopyTo = Me.Kopie_Empfänger.Value
' doc.BlindCopyTo = Me.BlindKopie_Empfänger.Value
doc.Subject = "Standardbetreff!" ' Betreff hier festlegen
doc.Body = Inhalt
Dateianhang = "C:\Datei.txt"
Set rtitem = doc.CREATERICHTEXTITEM("ProjectDescription")
Set EmbeddedObject = rtitem.EMBEDOBJECT(EMBED_ATTACHMENT, "", Dateianhang) 'Dateianhang mit Pfad und Dateiname überschreiben
'doc.SIGN = "0"
'doc.ENCRYPT = "0"
'doc.BlindCopyTo = ""
'doc.DefaultMailSaveOptions = 0 '"1"
'doc.MailSaveOptions = 0 '"1"
'doc.DeliveryReport = "B"
'doc.MailOptions = "2" '"0"/*-*--*//**/
'doc.Importance = "1" ' Neu
'doc.logo = "Barmenia" 'neu
'doc.ReturnReceipt = "1"
doc.principal = session.UserName
doc.viewicon = "75"
doc.FROM = session.UserName ' Von Zeile = Aktueller Benutzer
' doc.SaveOptions = 0 '"1"
' doc.SecureMail = ""
' doc.SenderTag = "F"
'SMTP-Originator
doc.PostedDate = Format$(Now, "dd.mm.yyyy") + " " + Format$(Now, "hh:nn:ss")
' doc.SAVEMESSAGEONSEND = 0
' Call doc.Save(False, False)
Call doc.Send(True, "")
Set doc = Nothing
Set DB = Nothing
End Sub
Sub Mail_Senden()
Dim Cell As Range
Call LotusMail(Range("AD213"), "", "Standardtext")
'Für jede Zelle in Bereich d2 bis zur letzen belegten Zelle in Spalte d wird eine Mail versandt.
' For Each Cell In Range("AD213:AD" & Cells(Rows.Count, "AD").End(xlUp).Row)
' If Cell <> "" Then Call LotusMail(Cell.Value, "", Cell(1, -2) & " " & Cell(1, -1) & " " & Cell(1, 0) & "," & Range("g2").Text & Cell(1, 2) & Range("h2").Text)
' Next
End Sub
Gibt es für so eine Anwendung evtl. auch Freeware?
Grüße
xfiles
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 227427
Url: https://administrator.de/contentid/227427
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo xfiles,
also LotusMail habe ich jetzt nicht hier zum testen aber so sollte es laufen, wenn du die Pfade zu den Anhängen in der Zelle jeweils rechts neben der E-Mail-Adresse in Spalte AE platzierst. Den Namen deines Sheets musst du in Zeile 55 noch eintragen.
Grüße Uwe
also LotusMail habe ich jetzt nicht hier zum testen aber so sollte es laufen, wenn du die Pfade zu den Anhängen in der Zelle jeweils rechts neben der E-Mail-Adresse in Spalte AE platzierst. Den Namen deines Sheets musst du in Zeile 55 noch eintragen.
Sub LotusMail(ByVal Empfaenger As String, ByVal Dateianhang As String, ByVal Betreff As String, ByVal Inhalt As String)
Dim Kopie_Empfänger As String, BlindKopie_Empfänger As String
Const EMBED_ATTACHMENT = 1454
Dim server As String, mailfile As String
Dim session As Object
Dim DB As Object
Dim doc As Object
Dim rtitem As Object
Dim EmbeddedObject As Object
' Auslesen der Mail-DB
Set session = CreateObject("Notes.NotesSession")
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set DB = session.GETDATABASE(server, mailfile)
Set doc = DB.CreateDocument()
doc.Form = "Main Topic"
doc.SendTo = Empfaenger ' Adressaten übergeben
' doc.CopyTo = Me.Kopie_Empfänger.Value
' doc.BlindCopyTo = Me.BlindKopie_Empfänger.Value
doc.Subject = Betreff
doc.Body = Inhalt
Set rtitem = doc.CREATERICHTEXTITEM("ProjectDescription")
Set EmbeddedObject = rtitem.EMBEDOBJECT(EMBED_ATTACHMENT, "", Dateianhang) 'Dateianhang mit Pfad und Dateiname überschreiben
'doc.SIGN = "0"
'doc.ENCRYPT = "0"
'doc.BlindCopyTo = ""
'doc.DefaultMailSaveOptions = 0 '"1"
'doc.MailSaveOptions = 0 '"1"
'doc.DeliveryReport = "B"
'doc.MailOptions = "2" '"0"/*-*--*//**/
'doc.Importance = "1" ' Neu
'doc.logo = "Barmenia" 'neu
'doc.ReturnReceipt = "1"
doc.principal = session.UserName
doc.viewicon = "75"
doc.FROM = session.UserName ' Von Zeile = Aktueller Benutzer
' doc.SaveOptions = 0 '"1"
' doc.SecureMail = ""
' doc.SenderTag = "F"
'SMTP-Originator
doc.PostedDate = Format$(Now, "dd.mm.yyyy") + " " + Format$(Now, "hh:nn:ss")
' doc.SAVEMESSAGEONSEND = 0
' Call doc.Save(False, False)
Call doc.Send(True, "")
Set doc = Nothing
Set DB = Nothing
End Sub
Sub Mail_Senden()
Dim sheet As Worksheet, rngStart As Range, rngEnd As Range, cell As Range
Set sheet = Worksheets("Tabelle1")
Set rngStart = sheet.Range("AD2")
Set rngEnd = rngStart.End(xlDown)
For Each cell In Range(rngStart, rngEnd)
If cell.Value <> "" Then
Anhang = cell.Offset(0, 1).Value
LotusMail cell.Value, Anhang, "Standardbetreff!", "Standardbody"
End If
Next
End Sub
ist korrigiert.
also ein Offset von einer Spalte nach Rechts von der aktuellen Zelle (erste Zahl = Zeilen-Offset , zweite Zahl Spalten-Offset)
Ich bin wahrscheinlich nur zu doof damit was anzufangen.
Und wo/wie definiere ich in VBA, dass der Anhang in Zelle AExxx liegt?
in Zeile 60 wird jeweils ein Offset zur aktuellen Zelle mit der E-Mail-Adresse definiertUnd wo/wie definiere ich in VBA, dass der Anhang in Zelle AExxx liegt?
Anhang = cell.Offset(0, 1).Value
meine Glaskugel kann leider nicht in deinen von dir geänderten Code und in dein Sheet schauen, da wird es schwer so ohne weitere Info deinerseits eine Diagnose zu stellen ...