twyker
Goto Top

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

Content-Key: 295882

Url: https://administrator.de/contentid/295882

Printed on: April 24, 2024 at 13:04 o'clock

Mitglied: 114757
114757 Feb 11, 2016 updated at 13:46:29 (UTC)
Goto Top
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
Gruß jodel32