Anzeige
Archiv - Navigation
1352to1356
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
Inhaltsverzeichnis

Serienmail mit Anhang

Serienmail mit Anhang
11.03.2014 15:22:00
Larissa
Hallo Excelfreunde,
ich bastele gerade an einem Makro, mit dem ich aus Excel Serienmails mit Anhang und personalisierter Anrede verschicken kann.
Im Netz habe ich eine Vorlage gefunden. Weil meine VBA-Kenntnisse begrenzt sind, brauche ich dringend Eure Hilfe. So funktioniert es jedenfalls noch nicht.
Könnt Ihr Euch das bitte einmal anschauen.......

Die Datei https://www.herber.de/bbs/user/89624.xlsm wurde aus Datenschutzgründen gelöscht

Vielen Dank im Voraus,
Larissa

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Serienmail mit Anhang
11.03.2014 15:43:48
Klaus
Hallo Larissa,
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
funktioniert bei mir nicht, daher ungetestet geändert:
Option Explicit
Sub Excel_Serial_Mail()
'Andreas Thehos, 2013-04-13, www.at-training.de
'Vorab unter Extras - Verweise die Library von Microsoft Outlook aktivieren
Dim objOLOutlook As Object  'Steht für die Anwendung Outlook
Dim objOLMail As Object     'Steht für die einzelnen E-Mails
Dim lngMailNr As Long       'Zeile, in der die untereste E-Mail in Spalte A steht
Dim lngZaehler As Long      'Zähler, welche Zeile gerade angesprochen wird
Dim strAttachmentPfad1 As String
', strAttachmentPfad2 As String  'Die Anhänge
On Error GoTo ErrorHandler  'Bei einem Fehler, wird unten die Fehlerbehandlung angesprochen
Set objOLOutlook = CreateObject("Outlook.Application")
strAttachmentPfad1 = "C:\Artikel.pdf"                'Pfade der Anhänge
'strAttachmentPfad2 = "C:\Pfad\Bild.jpg"
lngMailNr = Sheets("Pending").Cells(Sheets("Pending").Rows.Count, 8).End(xlUp).Row  ' _
Ermittlung unterste Zeile in Spalte H
For lngZaehler = 2 To lngMailNr
If Sheets("Pending").Cells(lngZaehler, 7) = "x" Then
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
With objOLMail
.To = Cells(lngZaehler, 8)
.CC = ""
.BCC = ""
'.Sensitivity = 3                'Vertraulichkeit
'.Importance = 2                 'Wichtigkeit
'.Subject = "Betreff" 'Larissa: Hier soll Tabellenblatt NL_Text Zelle A2 eingefü _
gt werden & eine Leerzeile
.Subject = Sheets("NL_Text").Range("a2").Value & " " 'NEU
.BodyFormat = olFormatPlain     'E-Mail-Format
.body = Sheets("NL_Text").Range("b2").Value
.Attachments.Add strAttachmentPfad1
'.Attachments.Add strAttachmentPfad2
'.Send                           'Versand
.Display
End With
Set objOLMail = Nothing             'E-Mail-Objekt wird beendet
End If
Next lngZaehler                            'Zur nächsten E-Mail
Set objOLOutlook = Nothing                 'Anwendung Outlook wird vaporisiert
Exit Sub
ErrorHandler:
MsgBox Err.Number & " " & Err.Description & " " & Err.Source, _
vbInformation, "Ein Fehler ist aufgetreten"
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Serienmail mit Anhang
11.03.2014 16:06:42
Larissa
Hallo Klaus,
Vielen Dank für die schnelle Anpassung.
Bei mir funktioniert es leider auch noch nicht. Es kommt immer die Meldung:
Fehler beim Kompilieren
Variable nicht definiert
Dann bleibt er hier stehen:
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
Kannst Du damit etwas anfangen?
Lieben Gruß,
Larissa

AW: Serienmail mit Anhang
11.03.2014 16:25:08
Klaus
Hallo Larissa,
damit kann ich leider nichts anfangen. Ich habe aber mein "Standard"-Outlook Script rausgekramt und an deine Zwecke angepasst. Funktioniert so zumindest auf meinem PC. Eine Fehlerbehandlung hat meine Version nicht, die könnte man aber nachrüsten.
Ich finds ja schön, wenn die Mails etwas persöhnlicher werden. Also meinetwegen mit "Hallo Frau Petra Zorn" anfangen. Die Informatione dazu sind ja in der Tabelle vorhanden. Danach hast du aber nicht gefragt, darum habe ich es auch nicht eingebaut.
Option Explicit
'Module to send Excel-Sheet directly with outlook
'April 2013 by Klaus M.vdT.
'original Code by mumpel / www.herber.de / 11.04.2013 11:23:25
'https://www.herber.de/forum/messages/1308295.html
'MODIFIZIERT 11/MÄRZ/2014 für Larissa
Sub SendAllx()
'give variables to send-Makro like this!
Dim sSheet As String
Dim sText As String
Dim sTo As String
Dim sSubject As String
Dim sAtt As String
Dim lRow As Long
Dim myRng As Range
With Sheets("Pending")
lRow = .Cells(.Rows.Count, 7).End(xlUp).Row
sSubject = Sheets("NL_Text").Range("A2").Value
sText = Sheets("NL_Text").Range("B2").Value
sAtt = "C:\Artikel.pdf"
'ich nehme an, der Pfad soll C2 aus NL_Text sein? Dann so:
'sAtt = Sheets("NL_Text").Range("C2").Value
'aber bitte in NL_Text den Pfad ohne die "" schreiben!!
For Each myRng In .Range(.Cells(2, 7), .Cells(lRow, 7))
If myRng.Value = "x" Then
sTo = .Cells(myRng.Row, 8).Value
Call SendMailOutlook(sSubject, sTo, sText, sAtt)
End If
Next myRng
End With
End Sub
Private Sub SendMailOutlook(sSubject As String, sTo As String, sText As String, AWS As String)
Dim olApp         As Object
Dim olOldBody     As String
'Make Email
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .htmlBody
.To = sTo
.Subject = sSubject
.htmlBody = sText & olOldBody
.Attachments.Add AWS
End With
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Serienmail mit Anhang
11.03.2014 18:57:32
Larissa
Hallo Klaus,
Du bist so genial :-)
Ich fasse es immer nicht, wie schnell Ihr Excelfreaks Euch in sowas einfuchsen könnt. Hut ab!!!
Deine Version funktioniert einwandfrei. Mit dem Pfad für die Datei hast Du völlig recht. Funzt super.
Es sind jetzt nur drei Kleinigkeiten, die mich noch stören:
1. Die persönliche Anrede hatte ich erstellt in Blatt NL Spalte B. Sie wird leider nicht mitgenommen. Kannst Du sie mir noch einbauen, oder hast Du eine andere Lösung, dann herzlich willkommen.
2. Die Schrift in der Email hätte ich gerne in Calibri Punkt 11, das wird leider nicht aus Excel übernommen.
3. Dann wird der Text in der Email einfach so hintereinander geschrieben, ohne Zeilenumbrüche. Die Umbrüche hätte ich natürlich gerne genau so wie in Excel vorgegeben. Geht das?
Buoahhhhh, wenn Du mir jetzt noch bei dem Feinschliff hilfst, dann machst Du mich überglücklich :-)
Lieben herzlichen Dank,
Larissa

Anzeige
AW: Serienmail mit Anhang
11.03.2014 19:42:27
Larissa
Hallo Klaus,
jetzt habe ich gerade Dein Bild in der Visitenkarte gefunden.
Whow, so ein hübscher junger Kerl!
Ich habe mir die Excelfreaks immer ganz anders vorgestellt..... ;-)
Sorry, aber meine Vorurteile sind damit jetzt verflogen.
Lass Dich aber dadurch nur nicht verwirren.... Du machst einen guten Job, nur weiter so!
Haha, das nur mal so zwischendurch.
Lieben Gruß,
Larissa

AW: Serienmail mit Anhang
12.03.2014 08:17:51
Klaus
Hallo Larissa,
1) eingebaut. Ich finde es problematisch, dass du die Anrede in einem anderen Tabellenblatt hast als die restlichen Daten! Solange die Zeilen in "NL" und "Pending" sich decken, ist alles gut. Aber wenn du mal versehentlich eine falsche Zeile einfügst, dann wird Frau Zorn plötzlich mit Herr Hut angesprochen ... und dann wird's peinlich oder sogar teuer (wenn Kunde1 nicht wissen darf, dass ihr auch Kunde2 beliefert zB).
Wenn du deine Tabelle umstellst, such im VBA nach dieser Zeile:
sText = Sheets("NL").Cells(myRng.Row, 2) & "<br>" & Sheets("NL_Text").Range("B2").Value ~f~
Sheets("NL").Cells(myRng.Row, 2) ist die Anrede, den Blattnamen kannst du einfach austauschen. das , 2) am Ende ist Spalte B. Wenn du die Anrede in Spalte Z schreibst, musst du die "2" gegen eine "26" tauschen usw.
2) Das geht bestimmt. Auf CALIBRI habe ich es eingestellt bekommen. Wie ich die Schriftart auf Windows-11 bekomme, das entzieht sich meinen Kentnissen. Hier sind wir aber bei HTML und nicht mehr bei EXCEL, das ist nicht mein Gebiet :-) Ich finde, CALIBRI 10 statt geforderten CALIBRI 11 ist nah genug dran :-)
3) Dein Muster-Text hat keine Umbrüche! Und Zeilenumbruch ist nicht gleich Zeilenumbruch. Am einfachsten: Du schreibst direkt in den Text (in Excel) den HTML-Zeilenumbruch <br> (4 Zeichen: kleiner bravo romeo größer) an die Stellen, an denen du einen Zeilenumbruch haben möchtest. Dann siehts im Excel blöd aus, in der Mail aber gut! Natürlich funktionieren alle anderen HTLM-Tags ebenso.
Alternative: Den Text in VBA zerlegen, nach ZEICHEN(10) und sonstigen Zeilenumbruch-Varianten suchen, WECHSELN bis der Arzt kommt und dann den Text wieder zusammen setzen.
Auf meinem Visitenkartenbild bin ich ausnahmsweise mal rasiert. Ich bin mir sicher, wenn ich mit 4-Tage Bart und ungewaschenen Haaren zwischen Pizzaschachteln vor dem Laptop hocke, entspreche ich mehr deinen Vorurteilen ;-) ;-)
da der Code jetzt HTML-Tags enthält und diese vom Forum interpretiert werden, einfacher als Datei-Upload:

Die Datei https://www.herber.de/bbs/user/89635.xlsm wurde aus Datenschutzgründen gelöscht


Grüße,
Klaus M.vdT-

Anzeige
AW: Serienmail mit Anhang
12.03.2014 10:57:41
Larissa
Hallo Klaus,
alles funktioniert dank Deiner Hilfe perfekt!!!!!!!!!!!!
1. Ich habe eine Spalte in dem Blatt "Pending" für die Anrede eingefügt und das Blatt "NL" gelöscht. So funktioniert es tadellos alles in einem Blatt.
2. Mit Calibri 10 bin ich sehr glücklich :-)
3. Ups stimmt, in dem Beispieltext waren gar keine Umbrüche. Mit
klappt aber auch das wunderbar.
Ich bin mir sicher, dass Du auch mit 4-Tagebart ein attraktiver Mann bleibst. Vielleicht ja sogar noch mehr.... Tja, meine Vorurteile kannst Du mir nicht wieder einreden ;-)
Ich danke Dir 1000 Mal.
Das war eine riesengroße Hilfe!!!
Lieben Gruß,
Larissa

Anzeige
Danke für die Rückmeldung! owT
12.03.2014 11:04:44
Klaus
.

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige