Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA liest Outlook aus, reagiert auf bestimmte Emails automat

VBA liest Outlook aus, reagiert auf bestimmte Emails automat
17.06.2024 19:01:08
Marc Franz
Liebe ExcelFreunde,
ich habe da mal ein paar Fragen.

Ich hab ein Projekt, indem ich über VBA und eine UserFrame Personalverwaltung betreibe oder betreiben lassen.

Hierbei werden unter anderem Einsätze von Mitarbeitern in unterschiedlichen Bereichen gesteuert, geplant UND oft auch außerhalb der Öffnungszeiten verändert.

Das Prinzip ist, Mo-Freitag von 8 - 13 Uhr werden die Einsätze geplant und entsprechend sowohl den Mitarbeitern als auch den jeweiligen Bereiche per Mail gesendet..
Die Aufträge selber werden dann über die UserForm in eine Datenbank gespeichert.

Es kommt aber nun vor, das nach 13 Uhr oder auch am Wochenende diese Aufträge nicht mehr aktuell sind, weil sie der Einsatzort geändert hat, die Dienstzeit oder der Mitarbeiter vielleicht krank ist.

Bisher wurde alles per Hand dokumentiert und am Montag nachgetragen.

Nun hatte ich die Idee,
das derjenige der die Änderung absegnet eine Email an eine bestimmte Emailadresse schickt mit einen vorgegebenen Betreff: (z.B. Planungsänderung Pool),
meine UserForm/Excel alle paar Minuten (sagen wir alle 15 Minuten) dieses Emailfach überprüft und sich nur die Email raus nimmt, die mit dem vorgegebenen Betreff versendet wurden, dort die Informationen ausliest und entsprechend automatisch den Einsatz in der Datenbank ändert..

und hier meine Fragen (gar nicht wie es geht, das möchte ich wenn es geht selber herausfinden ;) ) ob das technisch so möglich ist:

a) das man so einstellen kann (das wenn ein Startbutton o.ä,) gedrückt wird, dass bis zum Beenden (wieder durch ein Button o.ä.) alle 15 Minuten ein Emailfach kontrolliert wird (in outlook)
b) das obrige auch mit einer shared Emailadresse geht
c) er nur Emails durchsucht die in einem bestimmten Zeitraum gekommen sind (aber nur ungelesene)
d) sich Emails mit bestimmten Betreff genauer ansieht (Inhalt) und Zeile für Zeile in eine Variable speichert...
c) Die bearbeitete Email als gelesen markiert wird

viele Grüße Marc
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 09:47:41
Oberschlumpf
Hi Marc,

a) diese Frage solltest du vllt besser in einem Outlook-Forum stellen, weil du ja IN OL einen/mehrere Button platzieren willst
(natürlich is die Möglichkeit da, dass a) vllt auch hier beantwortet wird/werden könnte)
Und dir ist aber schon bewusst, dass du Outlook - bei jedem Kollegen, der mit deinem Tool arbeitet - dann mit deinen VBA-Code "manipulierst", oder?
Das muss nich schlimm sein, aber wenn du'n Fehler "einbaust", hat dieser dann jeder Kollege ;-)

b) funktioniert, entsprechend angepasst, vllt hiermit...
https://www.herber.de/forum/archiv/1384to1388/1385132_EMail_Absenderkonto_via_VBA_aendern.html
...oder hiermit...
https://www.vb-paradise.de/index.php/Thread/105392-Mit-VBA-Email-versenden-aus-2-Postfach/
...oder mit einem anderen der ca 33Tsd Treffer in Google mit Suchtext vba outlook mail von anderes postfach senden

c) ist grundsätzlich möglich mit dem Standard-Outlook-Konto. Wenn aber b) funktioniert, denke ich, dass c) auch mit einem gemeinsam genutzten Mailkonto funktioniert

d) = siehe c)

noch mal c) am Ende? nun denn...hier gilt auch: siehe c) (das erste)

Ciao
Thorsten
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 13:06:29
Marc Franz
Vielen Dank für die Nachrichten und die Tipps.

Allerdings hab ich mich wohl falsch ausgedrückt.
Ich will nichts in Outlook anpassen/verändern.

Sondern in meiner Excel Forms den Start/das Ende des OnTime Funktion starten und enden..

Outlook dient ja nur dazu, die Emails zu empfangen, die dann ausgelesen werden..
Aber du hast mir schon mal weiter geholfen.
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 13:13:52
Oberschlumpf
"...Ich will nichts in Outlook anpassen/verändern.

Sondern in meiner Excel Forms..."


= Ok, DAS in Excel zu realisieren, ist kein Problem.
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 13:24:24
Marc Franz
Das ist eine gute Nachricht :)

Ich experimentiere gerade mit OnTime .. Leider bringt er mir bei Abbruch der OnTime Schleife immer eine Fehlermeldung:





Public Sub OnTimeTest()
ThisWorkbook.Activate
Application.OnTime Now + TimeValue("00:01:00"), "AbfrageSub", , schedule:=True
End Sub

Public Sub Abbruch()
ThisWorkbook.Activate
Application.OnTime Now + TimeValue("00:01:00"), "AbfrageSub", , schedule:=False
End Sub


Public Sub AbfrageSub()
ThisWorkbook.Activate
If MsgBox("Möchten Sie weiter im Modus bleibem (ja) oder abbrechen (nein)?", vbYesNo) = vbNo Then
Call Abbruch
Else
Call OnTimeTest
End If
End Sub


Wenn ich auf ja klicke funtkioniert es wunderbar.
Bei Abbruch kommt Fehler 1004
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 13:58:00
Oberschlumpf
kann es sein, dass mind. in...
Application.OnTime Now + TimeValue("00:01:00"), "AbfrageSub", , schedule:=False 

...ein Komma zu viel drin ist?

Weil hier...
https://learn.microsoft.com/de-de/office/vba/api/excel.application.ontime
...wird vor ...False nur 1 Komma gesetzt

Wieso die selbe Syntax im Aufruf des Timers - nich - zu nem Fehler führt, versteh ich noch nich.
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 14:08:26
Marc Franz
Das , , liegt daran,
das dort noch eine weitere Variable (LatestTime) eingebunden werden kann.

In diversen Foren stand es so, das so implementiert werden sollte.

Ich teste Mal deine Variante..

Egal ob 1 "," oder 2 "," .. Der Fehler tritt weiter auf ....

AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 14:51:39
Heli
Hi,
Du musst beim Canceln der Schedule genau die gleiche Zeit angeben wie beim Starten > Now + TimeValue(...) in einer globalen Variablen speichern (beim Aufruf) und beim Abbruch diese dann verwenden.

Quelle: https://www.snb-vba.eu/VBA_Application.OnTime_en.html

Servus, Heli
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 15:07:59
Marc Franz
Hallo Danke für den Hinweis, das hatte ich auch gelesen, daher hatte ich das ganze Angepasst


Dabei wird die NextRun Variable global im Modul erstellt..
Das doppelte CDate ist natürlich nicht nötig..





Dim NextRun


Public Sub OnTimeTest()
ThisWorkbook.Activate
NextRun = CDate(Now + TimeValue("00:01:00"))
'MsgBox NextRun, vbOKOnly
Application.OnTime CDate(NextRun), "AbfrageSub" ', Schedule:=True

End Sub

Public Sub Abbruch()
ThisWorkbook.Activate
'On Error Resume Next
'MsgBox NextRun, vbOKOnly
Application.OnTime CDate(NextRun), Procedure:="AbfrageSub", Schedule:=False '+ TimeValue("00:01:00")

End Sub

Public Sub AbfrageSub()
ThisWorkbook.Activate

If MsgBox("Möchten Sie weiter im Modus bleiben (ja) oder abbrechen (nein)?", vbYesNo) = vbNo Then
Call Abbruch
Else
Call OnTimeTest
End If

End Sub



Der Fehler bleibt bestehen
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 15:26:37
Heli
Hi,
also wenn Deine Routine gestartet wurde wird nach einer Minute die Abfrage nach der Fortführung gestellt, da ist das OnTime-Ereignis aber schon abgelaufen > NextRun liegt in der Vergangenheit. Wenn Du dann also auf "Nein" gehst und der "Abbrechen"-Code läuft erzeugt das immer einen Fehler da kein OnTime-Makro mehr am laufen ist...

Servus, Heli
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 15:41:02
Marc Franz
Hi,
aber wenn ich deiner Argumentation folge,
würde es ja im Umkehrschluss ja bedeuten, das ich niemals eine Abbruch Routine brauche, da das OnTime Event ja nach "einmal laufen" beendet wird..
Und ich muss nur deklarieren, wenn das Event neu gestartet wird..
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 15:55:31
h
Hi,
genau so isses - wenn Du Deine OnTime-Prozedur nicht erneut anstartest (in der eigenen Routine z. B.) dann musst Du auch nicht abbrechen.
Denn OnTime ist nur ein zeitversetzter Start aber noch keine Dauerschleife ;-)

Servus, Heli
Anzeige
Danke für den Denkanstoss
18.06.2024 16:11:54
Marc Franz
Hallo

danke für den Denkanstoß
ich hatte da in der Tat ein Denkfehler.. Für mich lief der Aufruf OnTime solange weiter bis sie aktiv gestoppt wird...
Ich dachte nur bei jedem neuen Aufruf wird einfach nur die Zeit angepasst .

Aber hab jetzt umgebastelt und jetzt kommt kein Fehler mehr.

vg Marc
Anzeige
AW: VBA liest Outlook aus, reagiert auf bestimmte Emails automat
18.06.2024 16:44:05
Oberschlumpf
ich "sag" genau so Danke!
Ich tu mich immer wieder schwer mit OnTime...wird mal Zeit, dass sich was dreht! :-)...z Bsp morgen, 1800 Uhr :-))
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige