Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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

Automatisches Email-Versenden bei Ereignis

Automatisches Email-Versenden bei Ereignis
16.06.2014 09:49:31
Frank
Hallo liebe VBA-Excel-Community,
dieser Thread ist die Fortsetzung von "Index von 2 Spalten vergleichen und berechnen,VBA".
Die Anforderung besteht darin, dass beim eintreten eines Ereignises automatisch eine Email verschickt wird. Die Realisierung wird wohl mittels VBA-Code geschehen, allerdings weiß nicht viel bzw. nichts über Email-Programmierung.
Konkret: Sobald die Spalte "aktueller Bestand" (Spalte E, Blatt: Tonerbestand) sein Minimum erreicht bzw. es unterschreitet.
Wie könnte man es machen, dass dies über MS Outlook passiert?
Hier die Tabelle dazu:
https://www.herber.de/bbs/user/91136.xlsm

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 09:51:05
Frank
Edit:
Sobald die Spalte "aktueller Bestand" (Spalte E, Blatt: Tonerbestand) sein Minimum erreicht bzw. es unterschreitet soll eine Email an einen bestimmten Benutzer versandt werden.

AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 10:10:42
Rudi
Hallo,
etwa so:
....
If wksZ.Cells(a, 5) 
Sub StartMail(strToner As String)
Dim strTo As String, strSUBJECT As String, strText As String, _
strCC As String, strBCC As String, strAtt As String
strTo = "jemand@irgendwo.com" 'mehrere mit ; trennen
strSUBJECT = "Toner " & strToner
strText = "Bitte Toner " & strToner & " bestellen."
SendMail_Outlook strTo, strSUBJECT, strText, strCC, strBCC, strAtt
End Sub
Sub SendMail_Outlook(strTo As String, strSUBJECT As String, strText As String, _
strCC As String, strBCC As String, strAtt As String)
Dim MyMessage As Object, MyOutApp As Object, i As Integer
'Outlook Object erstellen
Set MyOutApp = CreateObject("Outlook.Application")
'Outlook Nachricht erstellen
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
'Empfänger
If Len(strTo) Then
.To = strTo
End If
'Kopie
If Len(strCC) Then
.CC = strCC
End If
'Blindkopie
If Len(strCC) Then
.BCC = strBCC
End If
'Betreff
.Subject = strSUBJECT
For i = 0 To UBound(Split(strAtt, ";"))
.Attachments.Add Trim(Split(strAtt, ";")(i))
Next
If Len(strText) Then
'Hier wird ein normaler Text erstellt
.Body = strText
End If
'Hier wird eine HTML Mail erstellt
'Dies kann zu Problemen führen, wenn der Empfänger nur TEXT Dateien empfangen darf.
'.HTMLBody = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
'Hier wird die Mail nochmals angezeigt
'        .Display
'Hier wird die Mail gleich in den Postausgang gelegt und gesendet
.Send
End With
'Outlook schliessen
'MyOutApp.Quit
'Variablen leeren
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub

Gruß
Rudi

Anzeige
AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 10:28:48
Nepumuk
Hallo Rudi,
ist die Abfrage nach der Länge der Parameter nicht überflüssig? .CC ist ein String mit dem Initialwert "". Wenn ich dem einen leeren String übergebe ist es immer noch ein leerer String. Eine Prüfung, ob da überhaupt eine gültige Mailadresse drin steht machst du ja dabei nicht.
Gruß
Nepumuk

Länge Parameter
16.06.2014 10:33:01
Rudi
Hallo,
ja, eigentlich überflüssig.
Und ein Fehler ist auch drin:
        If Len(strCC) Then
.BCC = strBCC
End If
Gruß
Rudi

AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 10:47:20
Frank
Hallo Nepumuk, mit "Rudi" meinst du wohl einen anderen Benutzer aus dem Forum?:)
"ist die Abfrage nach der Länge der Parameter nicht überflüssig?"
Was meinst du damit, welche Parameterlänge?
So ich habe es jetzt getestet und es funzt prima, ich bin happy wie schnell du das hinbekommen hast!!!! Danke vielmals! Ich werde es jetzt anpassen und vertiefter testen und melde mich danach.

Anzeige
AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 10:54:24
Frank
Hallo Nepumuk, könnte man es auch so anstellen, dass die Email(s) nicht sofort versant werden, sondern erst wenn man die Exceldatei speichert? Das hat den Grund, dass es sein könnte, dass evtl. mehrere Toner an einem Tag ausgegeben werden und nicht für jeden Toner eine eigene Email verschickt wird, sondern eine für alle?
Danke.

AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 11:21:05
Nepumuk
Hallo,
was hält dich davon ab, im Workbook_BeforeSave-Event die Prozedur zu starten?
Gruß
Nepumuk

AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 11:29:30
Frank
Jetzt nichts mehr:)
Aber vorher hielt mich mein Unwissen davon ab!
Klasse, danke dir!

AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 11:34:49
Frank
Da habe ich mich wohl zu früh gefreut, im VBA-Editor habe ich nur "Worksheet" und "(Allgemein)" zur Auswahl, aber kein "Workbook". Oder ist es die falsche Stelle?

Anzeige
AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 11:37:49
Nepumuk
Hallo,
in das Modul "DieseArbeitsmappe" !!!
Gruß
Nepumuk

AW: Automatisches Email-Versenden bei Ereignis
16.06.2014 13:16:05
Frank
Ja, ich habe es gefunden. D.h. kommt dort jetzt "StartMail wksZ.Cells(a, 2)" hin und bei
If-Abfrage im Worksheet diese Zeile wieder herausnehmen?

mit "Rudi" meinst du wohl
16.06.2014 11:07:09
Rudi
Hallo Frank,
er meint mich!
Was meinst du damit, welche Parameterlänge?
Er meint die Abfrage
If Len(strTo) Then
.To = StrTo
End If

etc.
weil
.To = strTo

ausreicht.
ich bin happy wie schnell du das hinbekommen hast!!!!
Das war ich, nicht Nepumuk.
Der Code stammt wohl ursprünglich von Ramses.
Gruß
Rudi

Anzeige
AW: mit "Rudi" meinst du wohl
16.06.2014 11:13:30
Frank
Verstehe immer noch nicht so recht was das mit mir zu tun hat. Oder haben wir beide ähnliche Fragestellung mit dir und Nepumuk hat uns beiden geantwortet?:)

Verstehe immer noch nicht so recht
16.06.2014 11:23:46
Rudi
Hallo Frank,
was gibt es da nicht zu verstehen?
Ich habe dir geantwortet und dir den Code geschickt.
Nepumuk hat mir eine Anregung zur Verbesserung gegeben.
Zu deiner Frage.
In DieseArbeitsmappe:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
StartMail
End Sub

In ein Modul:
Sub StartMail()
Dim strTo As String, strSUBJECT As String, strText As String, _
strCC As String, strBCC As String, strAtt As String, _
strToner As String
strToner = FehlBestand
strTo = "jemand@irgendwo.com" 'mehrere mit ; trennen
strSUBJECT = "Fehlender Toner"
strText = "Bitte Toner " & strToner & " bestellen."
SendMail_Outlook strTo, strSUBJECT, strText, strCC, strBCC, strAtt
End Sub
Sub SendMail_Outlook(strTo As String, strSUBJECT As String, strText As String, _
strCC As String, strBCC As String, strAtt As String)
Dim MyMessage As Object, MyOutApp As Object, i As Integer
'Outlook Object erstellen
Set MyOutApp = CreateObject("Outlook.Application")
'Outlook Nachricht erstellen
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
'Empfänger
.To = strTo
'Kopie
.CC = strCC
'Blindkopie
.BCC = strBCC
'Betreff
.Subject = strSUBJECT
For i = 0 To UBound(Split(strAtt, ";"))
.Attachments.Add Trim(Split(strAtt, ";")(i))
Next
'Hier wird ein normaler Text erstellt
.Body = strText
'Hier wird eine HTML Mail erstellt
'Dies kann zu Problemen führen, wenn der Empfänger nur TEXT Dateien empfangen darf.
'.HTMLBody = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
'Hier wird die Mail nochmals angezeigt
'        .Display
'Hier wird die Mail gleich in den Postausgang gelegt und gesendet
.Send
End With
'Outlook schliessen
'MyOutApp.Quit
'Variablen leeren
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub
Function FehlBestand() As String
Dim rngC As Range
With Sheets("Tonerbestand")
For Each rngC In .Range(.Cells(2, 5), .Cells(45, 5))
If rngC 

Gruß
Rudi

Anzeige
AW: Verstehe immer noch nicht so recht
17.06.2014 08:13:35
Frank
Ups, sorry Rudi, so habe ich den Kontext nicht gesehen:)
danke ich werde es gleich mal testen.

AW: Verstehe immer noch nicht so recht
17.06.2014 15:07:22
Frank
Hi Rudi,
leider wurde ich durch andere Aufgaben abgehalten und konnte diesen Code erst jetzt testen, aber leider habe ich wohl irgendwas falsch gemacht, da nichts funktioniert.
Habe den vorherigen Code entfernt und den neuen so wie du beschriben hast aufgesetzt.
https://www.herber.de/bbs/user/91152.xlsm

AW: Verstehe immer noch nicht so recht
20.06.2014 09:32:42
Frank
Leute ich bin hängen geblieben an dieser Stelle und komme nicht mehr weiter. Was habe ich falsch umgesetzt?
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige