Hallo Chris, klappt Super. Nun hab ich doch noch ein Problem. Wenn ich das Sheet schließe und wieder öffne versendet er wieder alle Emails. Wie Kriege ich es hin, dass er nur noch an neu hinzugekommene Email-Adressn versendet?
Sub mailto()
Dim Outlook As Object, MyMessage As Object
Set Outlook =_
CreateObject(„Outlook.Application“)
Set Mail = Outlook.CreateItem(0)
'Spalten: A=Adresse, B=Betreff,C=Text, D=Status
'von=von Zeile; bis= bis Zeile
von=2:bis=1002
for Z=von to bis
if cells(z,4)„gesendet“ and cells(z,1)"" then
With Mail
.To = cells(z,1) 'Adresse
.Subject = cells(z,2)'Betreff
.Body = cells(z,3) 'Text
.Send
End With
cells(z,4)=„gesendet“
endif
next Z
Set Outlook = Nothing
Set Mail = Nothing
End Sub
ersetze die Function durch eine Sub
diese nimmt aus den Zeilen 2 bis (hier 1002) aus der ersten Spalte die Adresse usw. und schreibt nach dem senden ein „gesendet“ in Spalte D. Nur die Adresse, bei denen nicht „gsendet“ in Spalte D steht werden gesendet.
Der Auslöser könnte dann eine Schaltfläche sein, auf die du drücken musst…
Spalten und Zeile lassen sich leicht anpassen.
Hab es direkt ausprobiert. Kleine Tabelle mit 5 Datensätzen. Wenn ich das Makro auslöse schickt er es an die erste Adresse und schreibt gesendet in D. Allerdings kommt dann ein Laufzeitfehler 2147221238 - das Element wurde verschoben oder gelöscht. Wenn ich das Makro wieder auslöse macht er mit dem 2. Datensatz weiter, aber dann wieder die Fehlermeldung. Kannst Du Dir das erklären?
Hab es direkt ausprobiert. Kleine Tabelle mit 5 Datensätzen. Wenn ich das Makro auslöse schickt er es an die erste Adresse und schreibt gesendet in D. Allerdings kommt dann ein Laufzeitfehler 2147221238 - das Element wurde verschoben oder gelöscht. Wenn ich das Makro wieder auslöse macht er mit dem 2. Datensatz weiter, aber dann wieder die Fehlermeldung. Kannst Du Dir das erklären?
Habe gerade gemerkt, dass er das beim letzen Datensatz nicht macht mit der Fehlermeldung.
Sub mailto()
Dim Outlook As Object, MyMessage As Object
Set Outlook =_
CreateObject(„Outlook.Application“)
'Spalten: A=Adresse, B=Betreff,C=Text, D=Status
'von=von Zeile; bis= bis Zeile
von=2:bis=1002
for Z=von to bis
if cells(z,4)„gesendet“ and cells(z,1)"" then
Set Mail = Outlook.CreateItem(0)
With Mail
.To = cells(z,1) 'Adresse
.Subject = cells(z,2)'Betreff
.Body = cells(z,3) 'Text
.Send
End With
cells(z,4)=„gesendet“
Set Mail = Nothing
endif
next Z
Set Outlook = Nothing
End Sub
mit
„Mail = Outlook.CreateItem(0)“ und
„Set Mail = Nothing“
Hallo Chris, ich schon wieder:smile: Das weißt Du nicht zufällig auch?
Zuhause (Outlook 2007) funktioniert das mit Deinem Makro hervorragend, in der Firma (Outlook 2010) erzeugt es die Fehlermeldung:
Laufzeitfehler: -2147467259 (80004005)
Outlook kennt mindestens einen Namen nicht
Mein e-mail-Konto läuft in der Firma über einen Exchange Server. Ich denke es muss irgendwie daran liegen oder?