Live-Forum - Die aktuellen Beiträge
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

Email mit Hilfe von Makro

Email mit Hilfe von Makro
10.03.2014 11:50:19
Makro
Hallo,
ich weiß, ich hab diesbezüglich schon ein Thema eröffnet, doch haben sich jetzt verschiedene Aktualisierungen ergeben:
Ich habe nun folgenden Code, mit dem eine Email automatisch verschickt werden soll, wenn in der Spalte T im Excelsheet "noch 14 Tage" auftaucht:
Option Explicit
Sub E_Mail_senden()
Dim zelle As Range
Dim outl
Dim Mail As Object
Dim letzteZeile As Long
Dim quelle As String
Dim Datenblatt As Worksheet
Set Datenblatt = ActiveWorkbook.Sheets("Datenblatt")
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
quelle = ActiveWorkbook.ActiveSheet.Name
For Each zelle In Datenblatt.Range("T4:T" & letzteZeile & "")
If zelle = "noch 14 Tage" Then
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "Erinnerung Probezeit"
Mail.body = "Die Probezeit von " & zelle.Offset(0, -19).Text & " läuft in 14 Tagen ab"
Mail.To = zelle.Offset(0, 1)
'Die Email Adresse des neben der Spalte Status Probezeit soll hier stehen
Mail.send
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate Mail
WshShell.SendKeys ("")
Set Mail = Nothing
Set outl = Nothing
Set WshShell = Nothing
End If
Next
End Sub

Leider zeigt es mir jetzt immer folgende Fehlermeldung an: Laufzeitfehler 13 Typen unverträglich...Kann mir hier jemand helfen? Vielen Dank schon im Voraus!

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Email mit Hilfe von Makro
10.03.2014 11:53:13
Makro
Dabei wird dann die Zeile "WshShell.AppActivate Mail" gelb unterstrichen...

AW: Email mit Hilfe von Makro
10.03.2014 12:32:02
Makro
Hallo!
Versuche es mit: WshShell.AppActivate outl
Gruß, René

AW: Email mit Hilfe von Makro
10.03.2014 13:21:31
Makro
Vielen Dank jetzt läuft es!!
Noch eine Frage hätte ich: Im Moment läuft mein Makro erst, wenn ich es über F5 aktiviere. gibt es eine Möglichkeit, dass es ständig im Hintergrund läuft und dann automatisch die Email versendet?
Oder gibt es eine Möglichkeit, dass das Makro durchläuft, wenn ich die entsprechende Excel Datei öffne?

AW: Email mit Hilfe von Makro
10.03.2014 13:31:20
Makro
Hallo,
Oder gibt es eine Möglichkeit, dass das Makro durchläuft, wenn ich die entsprechende Excel Datei öffne?
ja. Rufe die Prozedur im Workbook_Open-Ereignis auf.
Gruß
Rudi

Anzeige
AW: Email mit Hilfe von Makro
10.03.2014 13:32:48
Makro
Hallo Rudi,
danke für die Antwort! Wie genau mache ich das?

AW: Email mit Hilfe von Makro
10.03.2014 13:35:09
Makro
Hallo Kertesz,
gibt es eine Möglichkeit, dass es ständig im Hintergrund läuft und dann automatisch die Email versendet?
Ja, aber. Du kannst das Makro ereignisgesteutert aufrufen. zB könntest du es bei jeder Änderung der Zellenauswahl durchlaufen lassen, das ist dann fast genauso gut wie "ständig im Hintergrund".
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
E_Mail_senden 'bzw deinen Makronamen!
End Sub

Der Code gehört nicht in das Modul, sondern direkt in das fragliche Tabellenblatt! Damit habe ich beantwortet, was du gefragt hast.
Jetzt das aber: Damit würdest du permanent und ständig E-Mails schicken! Denn nachdem du eine Mail geschickt hast, steht in "Zelle" ja immer noch "noch 14 Tage" ... und schon wird das nächste Mail geschickt. Und nochmal, und nochmal :-)
Oder gibt es eine Möglichkeit, dass das Makro durchläuft, wenn ich die entsprechende Excel Datei öffne?
Klar. Einfach in "Diese Arbeitsmappe" (nicht in die Tabelle!) folgendes kopieren:
Private Sub Workbook_Open()
E_Mail_senden 'bzw deinen Makronamen!
End Sub

Gleiches Problem wie oben, wenn du die Tabelle 3-mal öffnest hast du auch 3-mal das Mail verschickt.
Mein Vorschlag: Nach verschicken des Mails müsste das Makro in einer Hilfsspalte meinetwegen ein "x" schreiben, oder auch "Mail gesendet" (oder direkt den Inhalt von "zelle" beeinflussen, aber ich nehme an darin stehen Formeln) um so ein erneutes Mail-Senden zu verhindern.
Sei vorsichtig wenn du per Makro eine Zelle änderst, wird das Change-Makro unter umständen erneut ausgelöst und landet in einer Endlosschleife!
Nähere Lösung gebe ich nicht ohne Mustertabelle :-)
Grüße,
Klaus M.vdT.

Anzeige
AW: Email mit Hilfe von Makro
10.03.2014 14:13:40
Makro
Hallo Klaus M.vdT.,
danke für die ausführliche Antwort!! Ich habe jetzt folgenden Mustercode, der allerdings nach wie vor zu dem Ergebnis führt, wie du es beschrieben hast. Wenn ich die Tabelle 3 mal aufrufe hab ich 3 mal die Email verschickt. Wie meinst du das genau mit der Hilfsspalte? Bei mir steht in Spalte T "noch 14 Tage" und daneben dann die Emailadresse, an die die Email geschickt werden soll (Spalte U). Meinst du
also zum Beispiel eine Spalte V einfügen mit dem Status "Mail gesendet"?
Hier mein Code:
Option Explicit
Sub E_Mail_senden()
Dim zelle As Range
Dim outl
Dim Mail As Object
Dim letzteZeile As Long
Dim quelle As String
Dim Datenblatt As Worksheet
Set Datenblatt = ActiveWorkbook.Sheets("Datenblatt")
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
quelle = ActiveWorkbook.ActiveSheet.Name
For Each zelle In Datenblatt.Range("T4:T" & letzteZeile & "")
If zelle = "noch 14 Tage" Then
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "Erinnerung Probezeit"
Mail.body = "Die Probezeit von " & zelle.Offset(0, -19).Text & " läuft in 14 Tagen ab"
Mail.To = zelle.Offset(0, 1)
'Die Email Adresse des neben der Spalte Status Probezeit soll hier stehen
Mail.send
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate outl
WshShell.SendKeys ("")
Set Mail = Nothing
Set outl = Nothing
Set WshShell = Nothing
End If
Next
End Sub

Anzeige
AW: Email mit Hilfe von Makro
10.03.2014 14:22:04
Makro
Hallo,
also zum Beispiel eine Spalte V einfügen mit dem Status "Mail gesendet"?
genau!
For Each zelle In Datenblatt.Range("T4:T" & letzteZeile & "")
If zelle = "noch 14 Tage" And zelle.Offset(, 2) = "" Then
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "Erinnerung Probezeit"
Mail.body = "Die Probezeit von " & zelle.Offset(0, -19).Text & " läuft in 14 Tagen ab"
Mail.To = zelle.Offset(0, 1)
'Die Email Adresse des neben der Spalte Status Probezeit soll hier stehen
Mail.send
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate outl
WshShell.SendKeys ("")
Set Mail = Nothing
Set outl = Nothing
Set WshShell = Nothing
zelle.Offset(, 2) = "Mail gesendet"
End If
Next

Gruß
Rudi

Anzeige
AW: Email mit Hilfe von Makro
10.03.2014 15:11:19
Makro
Hallo Rudi,
danke für die Antwort!!Hat mir bereits sehr geholfen!
Eine Frage noch: Im Moment läuft mein Makro erst, wenn die Datei geöffnet wird. Gibt es eine Möglichkeit dies vollständig zu automatisieren, d.h. wenn die Zelle den Wert "noch 14 Tage" soll ohne die Datei aufzurufen eine Email verschickt werden?

AW: Email mit Hilfe von Makro
10.03.2014 15:24:54
Makro
Hallo,
ohne die Datei aufzurufen
kurz: nein.
Wie soll die Datei denn irgendwas machen, ohne geöffnet zu sein? Das ist, als willst du mit dem Auto losfahren ohne den Motor zu starten. Würd theoretisch Benzin sparen, geht aber praktisch nicht.
Grüße,
Klaus M.vdT.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige