Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Massenmail aus Excel





Frage

Hallo! Ich habe folgendes Problem: Ich habe eine Excel - Tabelle mit Email - Adressen bekommen. Nun soll ich ein Mail an alle diese Adressen senden. Wenn ich eine einzelne Mailadresse anklicke, öffnet sich Outlook automaisch mit der entsprechenden Adresse im AN: - Feld. Wie kann ich es machen, dass [b]alle[/b] Emailadressen im An: - Feld stehen, ohne dass ich jede einzelne Adresse anklicken oder kopieren muss? Besten Dank! rubeus

Antwort 1 von coros

Hi Rubeus,

nachfolgend mal ein Code, so wie ich ihn bei mir einsetze um einen Newsletter aus Excel heraus zu versenden. Kopiere ihn in ein StandardModul und starte das Makro über eine Schaltfläche. Allerdings muss, damit das Makro einwandfrei funktioniert noch eine zusätzliche Software installiert werden. Bei der Software handelt es sich um Express ClickYes. Diese Software wird benötigt um eine Sicherheitsabfrage von Outlook, die kommt, wenn man von einem anderen Programm aus auf Outlook zugreift, automatisch quasi anzuklicken. Diese Software bekommst Du kostenlos unter http://www.contextmagic.com/express-clickyes/ . Installiere diese und das Makro wird die Serienmails ohne Nachfrage anzeigen oder gleich in den Postausgang legen.

Option Explicit

Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
         
Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Declare Function TerminateProcess Lib "kernel32" _
(ByVal hProcess As Long, ByVal uExitCode As Long) As Long
   
Private Const PROCESS_TERMINATE = &H1

Sub Serienmails_versenden()
Dim Outlook_Anwendung As Object, Mail As Object, Wiederholungen, _
Anwendung As DataObject, Nachricht, _
Programmende As Long, Schluß As Long

Shell ("C:\Programme\Express ClickYes\ClickYes.exe")
    
For Wiederholungen = 2 To Range("C65536").End(xlUp).Row
Set Anwendung = New DataObject
Set Outlook_Anwendung = CreateObject("Outlook.Application")
Set Nachricht = Outlook_Anwendung.CreateItem(0)
     
With Nachricht
Rem: Text für Betreffzeile wird eingefügt
    .Subject = "Newsletter von www.excelbeispiele.de!"
Rem: Text für E-Mail wird eingefügt
    .HTMLBody Sheets("Tabelle1").TextBox1.Text
    Rem: .Body = Sheets("Tabelle1").TextBox1.Text
Rem: In die Zeile "An" wird der Empfänger eingetragen
    .To = Cells(Wiederholungen, 4)
Rem: Hier wird die Mail angezeigt
    .Display
Rem: Hier wird die Mail gleich in den Postausgang gelegt
    Rem:.Send
End With
Set Outlook_Anwendung = Nothing
Set Nachricht = Nothing

Next Wiederholungen
Programmende = Shell("C:\Programme\Express ClickYes\ClickYes.exe", 0)
Schluß = OpenProcess(PROCESS_TERMINATE, False, Programmende)
TerminateProcess Schluß, 0
CloseHandle Schluß

End Sub



Da ich mit der Erklärung zusammen über das Limit von 5000 Wörtern komme, kommt in der nächsten Antwort die Erklärung dazu.


Antwort 2 von coros

So, ich nochmal zum Zweiten.

Also, obiges Makro erstellt so viele Mails, wie Mailadressen in Spalte D vorhanden sind. Stehen die Mailadressen in einer anderen Spalte, so muss in dem Makro in der Zeile

.To = Cells(Wiederholungen, 4)

die Spaltenindexzahl geändert werden. Die Zahl 4 steht für Spalte D. Für Spalte A würde eine 1 stehen, für B eine 2, für C eine 3 usw. Als E-Mailtext wird ein Text aus Blatt E-Mailtext und dort aus einer TextBox an Outlook übergeben. Man kann aber auch einen Text aus einer Zelle übergeben. Dann müsste in dem Makro in der Zeile

.HTMLBody Sheets("Tabelle1").TextBox1.Text ´Sheets("E-Mailtext").Range("B1")

anstelle TextBox1.Text die Zellangabe, z.B. Range(„A1“), wenn der Text in Zelle A1 steht, stehen. Der Text wird an HTMLBody übertragen, da ich in dem text Formatierungen habe, die bei einem einfachen übertragen an den Body nicht mit übertragen würden. Wenn Du das nicht willst, schreibe vor die Zeile das Wort "Rem" und lösche eine Zeile tiefer in dem Makro das Wort "Rem:". Im Moment ist das Makro so eingestellt, dass es die einzelnen erstellten Mails anzeigt. Wenn diese sofort in den Postausgang gelegt werden sollen, dann vor die Zeile

.Display

das Wort Rem schreiben und in der Zeile

Rem:.Send
Das Wort "Rem:" löschen. Dann werden die Mails gleich in den Postausgang gelegt.

Nun noch zu dem Programm um Express ClickYes, wenn Du das installiert hast, kontroliere noch mal den Pfad. Sollte der von der Pfadangabe in dem Makro in den Zeilen

Shell ("C:\Programme\Express ClickYes\ClickYes.exe")

und

Programmende = Shell("C:\Programme\Express ClickYes\ClickYes.exe", 0)

Abweichen, so passe den dort an. Dann musst Du einmal das Programm öffnen, so dass es im Systemtray erscheint und dann auf das dort angezeigte Icon mit der rechten Maustaste klicken und in dem Menü den Eintrag "Start on Logon" anhaken und den Eintrag "Start Suspended" abwählen.

So, das wars. Wenn Du Probleme oder Fragen haben solltest, so melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 3 von Rubeus

Hallo coros,

hat prima funkioniert, vielen Dank!

Gruss
rubeus

Antwort 4 von coros

Hi rubeus,

freut mich, dass Du durch den ganzen Text durchgestiegen bist und dass es Dir geholfen hat. Danke Dir auch für Deine Rückmeldung.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von Joschi

Hallo!
Deine Frage ist ja schon umfangreich beantwortet worden. Hier aber ggf. für andere mit ähnlichen Fragen noch eine Alternative, wenn auch mit weniger zusätzlichen Features... also wenn´s nur darum geht, mehrere Mailadressen von einer Excel-Tabelle in eine Mail zu bekommen:
Die Zellen mit den Mailadressen in Excel kopieren (ggf. vorher sortieren, um unnötige Leerzeilen rauszuschmeißen) und dann im Empfängerfeld in Outlook einfügen. Anschließend das Empfängerfeld verlassen --> Outlook sollte dann - nach ein paar Sekunden - die Adressen als Mailadressen erkennen. Notfalls mit "Namen überprüfen" nachhelfen.

Liebe Grüße
Fee

P.S.: vielleicht lieber "BCC" als "AN" verwenden? Offene Mailverteiler sind problematisch.
a) Mailadressen-Verbreitung
b) Maillawinengefahr, wenn auf einer Empfängerseite ein Bug sitzt...

Antwort 6 von doreenwerner

Hallo corus,

dieses Thema interessiert mich auch sehr.

Die Software Express ClickYes darf ich leider nicht auf meinen dienstlichen Rechner installieren.

Kannst Du mir eine andere Lösung anbieten.

Gruß
doreenwerner

Antwort 7 von coros

Hi doreenwerner,

nein, habe ich nicht. Dann muss immer wenn die Sicherheitsmeldung von Outlook erscheint, diese mit ja bestätigt werden. Sorry, dass ich da keine andere Lösung habe, aber da Umgehen dieser Sicherheitsabfrage geht halt nur mit einer separaten Software.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 8 von lettermann

Hallo corus,
mit deinem Makro, kann ich nur eine Zelle als Text der email -Nachricht versenden. Wie müßte ich das Makro verändern, wenn ich einen Bereich z.B. A2:K5 versenden will? Es sollte aber nicht als Anhang versandt werden.
Mfg
lettermann

Antwort 9 von coros

Moin Lettermann,

dann sieht der Code aus Antwort 1 folgendermaßen aus:

Option Explicit

Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Declare Function TerminateProcess Lib "kernel32" _
(ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Const PROCESS_TERMINATE = &H1

Sub Serienmails_versenden()
Dim Outlook_Anwendung As Object, Mail As Object, Wiederholungen, _
Anwendung As DataObject, Nachricht, _
Programmende As Long, Schluß As Long

Rem: Bereich, der in die Mail eingefügt werden soll
Range("A1:D4").Copy

Shell ("C:\Programme\Express ClickYes\ClickYes.exe")

For Wiederholungen = 2 To Range("C65536").End(xlUp).Row
Set Anwendung = New DataObject
Set Outlook_Anwendung = CreateObject("Outlook.Application")
Set Nachricht = Outlook_Anwendung.CreateItem(0)

With Nachricht
Rem: Text für Betreffzeile wird eingefügt
.Subject = "Newsletter von www.excelbeispiele.de!"
Rem: Text für E-Mail wird eingefügt
Anwendung.GetFromClipboard
.HTMLBody = Anwendung.GetText(1)
Rem: .Body = Sheets("Tabelle1").TextBox1.Text
Rem: In die Zeile "An" wird der Empfänger eingetragen
.To = Cells(Wiederholungen, 4)
Rem: Hier wird die Mail angezeigt
.Display
Rem: Hier wird die Mail gleich in den Postausgang gelegt
Rem:.Send
End With
Set Outlook_Anwendung = Nothing
Set Nachricht = Nothing

Next Wiederholungen
Programmende = Shell("C:\Programme\Express ClickYes\ClickYes.exe", 0)
Schluß = OpenProcess(PROCESS_TERMINATE, False, Programmende)
TerminateProcess Schluß, 0
CloseHandle Schluß

End Sub


Hier wird der Bereich A1:D4 kopiert und dann über die Zwischenablage in die E-Mail eingefügt. Den Bereich kannst Du in dem Makro in der Zeile

Range("A1:D4").Copy

anpassen.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 10 von lettermann

Hallo Oliver,
leider bin ich nicht so ein Experte, daß ich mit Deinem Code klarkomme. Beim Debuggen springt das Programm von
"For Wiederholungen = 2 To Range("C65536").End(xlUp).Row"
sofort zu "End sub ". Aujßer das der Bereich markiert wurde passsiert eigentlich gar nichts. Das mit dem
"Shell ("C:\Programme\Express ClickYes\ClickYes.exe") " habe ich allerdings weggelassen ( Dienstrechner ).
Kannst Du bitte mal die Zeilen erklären:
Anwendung.GetFromClipboard
.HTMLBody = Anwendung.GetText(1)
Rem: .Body = Sheets("Tabelle1").TextBox1.Text
Vielen Dank
Mfg
Lettermann

Antwort 11 von coros

Moin Lettermann,

das bei Dir vom Schleifenanfang gleich zu End Sub gesprungen wird, wird daran liegen, dass in Spalte C keine E-Mailadresse steht. Somit ergibt sich, dass die Schleife nicht durchlaufen wird.

Die Befehle

Anwendung.GetFromClipboard
.HTMLBody = Anwendung.GetText(1)


bedeuten, dass der Text aus dem Bereich A1:D4, der vorher mit dem Befehl "Range("A1:D4").Copy " kopiert wurde, aus der Zwischenablage in das Outlookdokument eingefügt wird. Der Befehl

Rem: .Body = Sheets("Tabelle1").TextBox1.Text

ist auskommentiert und kommt hier nicht zum Einsatz. Der würde die Mail nicht als HTML-Mail schreiben, sondern als Richtext. Dann müsste das ganze allerdings nicht wie im Moment in dem Makro steht lauten, sondern

Anwendung.GetFromClipboard
.Body = Anwendung.GetText(1)


Ich hoffe, ich konnte Dir Deine Fragen beantworten.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 12 von lettermann

Hallo Oliver,
Du hast völlig Recht, das war die Ursache. Jetzt klappt alles wunderbar, ich bin begeistert von Deiner Lösung.
Gibt es auch eine Möglichkeit in dem gesendeten Text Zeilenumbrüche einzufügen ? Zur Zeit wird alles hintereinander ohne Formatberücksichtigung in die mail eingetragen. Nochmals vielen vielen Dank.
Mfg
lettermann

Antwort 13 von coros

Nabend Lettermann,

sorry, dass ich mich erst jetzt auf Deinen Beitrag hin melde, aber ich konnte leider aus Zeitgründen nicht vorher antworten. Es wäre gut gewesen, wenn Du geschrieben hättest, wie Du die Mail versenden möchtest, also als Rich-Text oder als HTML-Text. Nachfolgendes Makro kopiert den Wert aus dem Bereich A1:D4 und fügt nach jedem Text einer Zelle, einen Zeilenumbruch ein. In dem Makro wird dann aber nicht mehr mit der Zwischenablage gearbeitet, sondern es wird durch zwei Schleifen (For Zeile und For Spalte) der Bereich Zelle für Zelle ausgelesen und in Variable „Text“ eingetragen. Danach wird der Text aus der Variablen in Outlook ausgegeben

Option Explicit

Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Declare Function TerminateProcess Lib "kernel32" _
(ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Const PROCESS_TERMINATE = &H1

Sub Serienmails_versenden()
Dim Outlook_Anwendung As Object, Mail As Object, Wiederholungen, _
Anwendung As DataObject, Nachricht, _
Programmende As Long, Schluß As Long, Spalte As Integer, _
Zeile As Long, Text As String

Rem: Bereich, hier A1 bis D4, der in die Mail eingefügt werden soll
For Zeile = 1 To 10
For Spalte = 1 To 4
Text = Text & "<br>" & Cells(Zeile, Spalte)
Next
Next

Shell ("C:\Programme\Express ClickYes\ClickYes.exe")

For Wiederholungen = 1 To Range("I65536").End(xlUp).Row
Set Anwendung = New DataObject
Set Outlook_Anwendung = CreateObject("Outlook.Application")
Set Nachricht = Outlook_Anwendung.CreateItem(0)

With Nachricht
Rem: Text für Betreffzeile wird eingefügt
.Subject = "Newsletter von www.excelbeispiele.de!"
Rem: Text für E-Mail wird eingefügt
.HTMLBody = Text ´Anwendung.GetText(1)
Rem: In die Zeile "An" wird der Empfänger eingetragen
.To = Cells(Wiederholungen, 4)
Rem: Hier wird die Mail angezeigt
.Display
Rem: Hier wird die Mail gleich in den Postausgang gelegt
Rem:.Send
End With
Set Outlook_Anwendung = Nothing
Set Nachricht = Nothing

Next Wiederholungen
Programmende = Shell("C:\Programme\Express ClickYes\ClickYes.exe", 0)
Schluß = OpenProcess(PROCESS_TERMINATE, False, Programmende)
TerminateProcess Schluß, 0
CloseHandle Schluß

End Sub

Soll der Bereich geändert werden, so muss in dem Makro in der Zeile

For Zeile = 1 To 10

die Zeilen, die ausgelesen werden sollen eingetragen werden (Beispiel: Zeile 2 bis15 dann „For Zeile = 2 to 15“) und in der Zeile

For Spalte = 1 To 4

die Spalten, die ausgelesen werden sollen, eingetragen werden. Die Zahl 1 steht für Spalte A, eine 2 würde für Spalte B, eine 3 für Spalte C usw. stehen (Beispiel: Spalte B bis F, dann „For Spalte = 2 to 6).

Willst Du die Mail als Rich-Text versenden, dann muss in dem Makro die Zeile

Text = Text & "<br>" & Cells(Zeile, Spalte)

gegen die Zeile

Text = Text & vbCrLf & Cells(Zeile, Spalte)

und die Zeile

.HTMLBody = Text ´Anwendung.GetText(1)

gegen die Zeile

.Body = Text

getauscht werden.

So, ich hoffe, Du kommst klar. Bei Fragen melde Dich wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 14 von doreenwerner

Hallo,

Ist es auch möglich mit dem angegeben Code personalisierte E-Mails zu versenden. d.h. ich habe die E-Mailadresse in einer Excel-Datei und möchte denjenigen in der Mail ansprechen, wie z.B. "Sehr geehrter Herr Mustermann,". Ebenfalls möchte ich eine Anlage mitsenden.

MfG
doreenwerner

Antwort 15 von lettermann

Hallo Oliver,
bin am Wochenende leider nicht dazugekommen ins Forum zu schauen, deshalb melde ich mich erst jetzt.
wollte Deine Lösung testen, bekomme aber immer in der Zeile : "_
Anwendung As DataObject "
also nach "Dim Outlook_Anwendung As Object, Mail As Object, Wiederholungen, _
Anwendung As DataObject, Nachricht, _
Programmende As Long, Schluß As Long" eine Fehlermeldung: Fehler beim Kompilieren. Benutzerdef. Typ nicht definiert.
Woran könnte das liegen ?
Mfg
lettermann

Antwort 16 von coros

Hallo lettermann,

nachfolgender Code sollte funktionieren. Ich hatte die Variable "Anwendung " noch deklariert, die für das kopieren über Zwischenablage zuständig war und durch den Befehl "Set Anwendung = New DataObject" auch noch angesteuert. Dadurch kommt es dann zu einem Fehler. Außerdem muss im VBA Editor unter "Extras => Verweise" den Verweis "Microsoft Outlook xx.x Objekt Library aktiviert werden, da das Makro sonst nicht ausgeführt werden kann und es zu einer Fehlermeldung kommen kann. Anstelle der Bezeichnung xx.x steht bei Ihnen die Versionsbezeichnung von Excel z.B. für Excel 2002 die Zahl 10.0

Option Explicit

Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Declare Function TerminateProcess Lib "kernel32" _
(ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Const PROCESS_TERMINATE = &H1

Sub Serienmails_versenden()
Dim Outlook_Anwendung As Object, Mail As Object, Wiederholungen, Nachricht, _
Programmende As Long, Schluß As Long, Spalte As Integer, _
Zeile As Long, Text As String

Rem: Bereich, hier A1 bis D10, der in die Mail eingefügt werden soll
For Zeile = 1 To 10
For Spalte = 1 To 4
Text = Text & "<br>" & Cells(Zeile, Spalte)
Next
Next

Shell ("C:\Programme\Express ClickYes\ClickYes.exe")

For Wiederholungen = 1 To Range("I65536").End(xlUp).Row

Set Outlook_Anwendung = CreateObject("Outlook.Application")
Set Nachricht = Outlook_Anwendung.CreateItem(0)

With Nachricht
Rem: Text für Betreffzeile wird eingefügt
.Subject = "Newsletter von www.excelbeispiele.de!"
Rem: Text für E-Mail wird eingefügt
.HTMLBody = Text
Rem: In die Zeile "An" wird der Empfänger aus Spalte I eingetragen
.To = Cells(Wiederholungen, 9)
Rem: Hier wird die Mail angezeigt
.Display
Rem: Hier wird die Mail gleich in den Postausgang gelegt
Rem:.Send
End With
Set Outlook_Anwendung = Nothing
Set Nachricht = Nothing

Next Wiederholungen
Programmende = Shell("C:\Programme\Express ClickYes\ClickYes.exe", 0)
Schluß = OpenProcess(PROCESS_TERMINATE, False, Programmende)
TerminateProcess Schluß, 0
CloseHandle Schluß

End Sub


Die Mailadressen müssen in Spalte I stehen, dann werden soviel Mails versandt wie Adressen in der Spalte stehen.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

Da ich mal wieder an die 5000 Zeichengrenze gekommen bin, kommt in der nächsten Antwort die Lösung für doreenwerner.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 17 von coros

Hi doreenwerner,

dann muss in den Code noch die Zeile

.attachments.Add "C:\Test.txt"

eingefügt werden. Diese bewirkt, dass eine Datei, hier die Datei "Test.txt", angehängt wird. Außerdem muss dann in der Zeile

.HTMLBody

der Text, wie z.B. Sehr geehrter Herr XX und die Zelle, in der der Name steht, aufgeführt werden. Nachfolgend mal der gleiche Code, der eine Datei anhängt und die Anrede mit einfügt. Der Name für die Anrede muss in diesem Beispiel in Spalte E stehen. Die angesprochenen Befehle habe ich Unterstrichen.

Option Explicit

Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Declare Function TerminateProcess Lib "kernel32" _
(ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Const PROCESS_TERMINATE = &H1

Sub Serienmails_versenden()
Dim Outlook_Anwendung As Object, Mail As Object, Wiederholungen, Nachricht, _
Programmende As Long, Schluß As Long, Spalte As Integer, _
Zeile As Long, Text As String

Rem: Bereich, hier A1 bis D10, der in die Mail eingefügt werden soll
For Zeile = 1 To 10
For Spalte = 1 To 4
Text = Text & "<br>" & Cells(Zeile, Spalte)
Next
Next

Shell ("C:\Programme\Express ClickYes\ClickYes.exe")

For Wiederholungen = 1 To Range("I65536").End(xlUp).Row

Set Outlook_Anwendung = CreateObject("Outlook.Application")
Set Nachricht = Outlook_Anwendung.CreateItem(0)

With Nachricht
Rem: Text für Betreffzeile wird eingefügt
.Subject = "Newsletter von www.excelbeispiele.de!"
Rem: Text für E-Mail wird eingefügt
.HTMLBody = "Sehr geehrter Herr " & Cells(Wiederholungen, 5) & "," & "<br>" & Text
Rem: In die Zeile "An" wird der Empfänger aus Spalte I eingetragen
.To = Cells(Wiederholungen, 9)
Rem: Hängt die Datei "Test.txt" an die Mail an.
.attachments.Add "C:\Test.txt"
Rem: Hier wird die Mail angezeigt
.Display
Rem: Hier wird die Mail gleich in den Postausgang gelegt
Rem:.Send
End With
Set Outlook_Anwendung = Nothing
Set Nachricht = Nothing

Next Wiederholungen
Programmende = Shell("C:\Programme\Express ClickYes\ClickYes.exe", 0)
Schluß = OpenProcess(PROCESS_TERMINATE, False, Programmende)
TerminateProcess Schluß, 0
CloseHandle Schluß

End Sub


Ich hoffe, Du kommst ebenfalls klar. Bei Fragen melde Dich.


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.