VBA Programmierung (Ausführung bei gelesenen Mails)
Hey Zusammen,
ich eigne mir grade VBA an und komme jetzt nicht mehr weiter.
Ich hab ein Lampensystem an meinen Rechner angeschlossen und möchte nun folgendes.
1. Grüne Lampe geht an bei neuer Mail.
2. Geht danach wieder aus.
3. Rote Lampe geht an bei 2 oder Mehr neuen Mails.
4. Rote Lampe geht aus sobald alle Mails gelesen sind.
Bei 4. komm ich nicht weiter, mir fehlt quasi die Abfrage.
Mein aktueller Code:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
MsgBox ("E-Mail wurde gesendet!")
End Sub
Private Sub Application_NewMail()
unread_mails
End Sub
Private Sub application_startup()
MsgBox ("Hallo Lukas, Wilkommen bei Outlook.")
End Sub
Public Sub unread_mails()
'Funktion zum überprüfen auf neue Mails im Ordner "Posteingang"
'In Variable "u" wird die Anzahl der ungelesenen Nachrichten übergeben
Dim unread_items, mapi, inbox, mail
Set outObj = CreateObject("Outlook.Application")
unread_items = 0
Set mapi = outObj.GetNamespace("MAPI")
Set inbox = mapi.GetDefaultFolder(6) 'Zeiger auf Posteingang setzten - Posteingang = Folder(6)
For Each mail In inbox.Items 'überprüfen auf ungelesene Mails
If mail.UnRead Then unread_items = unread_items + 1
If unread_items > 1 Then
Shell "C:\Program Files (x86)\Gembird\Power Manager\pm.exe -on -Device1 -Rot"
End If
Next
Shell "C:\Program Files (x86)\Gembird\Power Manager\pm.exe -on -Device1 -Grün"
'Ausgabe als Msgbox
MsgBox "Sie haben " & unread_items & " ungelesene Mails in Ihrem Posteingang", vbOKOnly, "Posteingang überprüft"
Shell "C:\Program Files (x86)\Gembird\Power Manager\pm.exe -off -Device1 -Grün"
End Sub
Leider helfen mir mein Buch und Google, jetzt nicht mehr weiter.
Danke im Vorraus
Twyker
ich eigne mir grade VBA an und komme jetzt nicht mehr weiter.
Ich hab ein Lampensystem an meinen Rechner angeschlossen und möchte nun folgendes.
1. Grüne Lampe geht an bei neuer Mail.
2. Geht danach wieder aus.
3. Rote Lampe geht an bei 2 oder Mehr neuen Mails.
4. Rote Lampe geht aus sobald alle Mails gelesen sind.
Bei 4. komm ich nicht weiter, mir fehlt quasi die Abfrage.
Mein aktueller Code:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
MsgBox ("E-Mail wurde gesendet!")
End Sub
Private Sub Application_NewMail()
unread_mails
End Sub
Private Sub application_startup()
MsgBox ("Hallo Lukas, Wilkommen bei Outlook.")
End Sub
Public Sub unread_mails()
'Funktion zum überprüfen auf neue Mails im Ordner "Posteingang"
'In Variable "u" wird die Anzahl der ungelesenen Nachrichten übergeben
Dim unread_items, mapi, inbox, mail
Set outObj = CreateObject("Outlook.Application")
unread_items = 0
Set mapi = outObj.GetNamespace("MAPI")
Set inbox = mapi.GetDefaultFolder(6) 'Zeiger auf Posteingang setzten - Posteingang = Folder(6)
For Each mail In inbox.Items 'überprüfen auf ungelesene Mails
If mail.UnRead Then unread_items = unread_items + 1
If unread_items > 1 Then
Shell "C:\Program Files (x86)\Gembird\Power Manager\pm.exe -on -Device1 -Rot"
End If
Next
Shell "C:\Program Files (x86)\Gembird\Power Manager\pm.exe -on -Device1 -Grün"
'Ausgabe als Msgbox
MsgBox "Sie haben " & unread_items & " ungelesene Mails in Ihrem Posteingang", vbOKOnly, "Posteingang überprüft"
Shell "C:\Program Files (x86)\Gembird\Power Manager\pm.exe -off -Device1 -Grün"
End Sub
Leider helfen mir mein Buch und Google, jetzt nicht mehr weiter.
Danke im Vorraus
Twyker
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 295882
Url: https://administrator.de/forum/vba-programmierung-ausfuehrung-bei-gelesenen-mails-295882.html
Ausgedruckt am: 28.04.2025 um 17:04 Uhr
1 Kommentar

4. Rote Lampe geht aus sobald alle Mails gelesen sind.
Für diesen Punkt folgender Code in ThisOutlookSession einfügen. Danach WICHTIG Outlook neu starten sonst funktionieren die Events nicht.(Code zum Ausschalten der Lampe, an der kommentierten Stelle einfügen)
Feddich.
Dim WithEvents objItems As Items
'Prozedur die beim Öffnen von Outlook aktiviert wird
Private Sub Application_Startup()
' Fülle das Items-Objekt mit der Collection des Posteingangs
Set objItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
End Sub
'Event wird ausgeführt sobald ein Item im Posteingang verändert wird
Private Sub objItems_ItemChange(ByVal Item As Object)
If Item.Class = olMail Then
'Wenn keine ungelesene Mail mehr im Posteingang liegt dann...
If Item.Parent.UnReadItemCount = 0 Then
' ===> Hier Lampe ausschalten (keine ungelesenen Mails mehr)
' ===> Dein Code hier <====
End If
End If
End Sub