chgs2011
Goto Top

Outlook 2010 . VBA Script zum aufklappen aller Postfächer, aber nur bei ungelesenen bzw. unread Mails

Hallo,

ich habe in Outlook 2010 mehrere Postfächer, die ich mit Hilfe eines gefunden VBAs steuere.

Das VBA klappt alle vorhanden Postfächer auf und springt auf Posteingang, sofern ich dies hinterlege.

Ich wollte das Script nun erweitern, dass NUR die Postfächer aufgeklappt werden, in denen es in irgendeinem Unterordner / Posteingang noch ungelesene Emails gibt.
Ist alles gelesen, sollen diese einfach zugeklappt bleiben.


So sieht es aktuell aus und läuft:

        Private Sub Application_Startup()
        'Folder-Variable definieren  
        Dim objFolderIMAP01 As Outlook.Folder
        Dim objFolderIMAP02 As Outlook.Folder
        Dim objFolderIMAP03 As Outlook.Folder
        
        'IMAP-Folder zuweisen (hier in Klammern mit Anführungszeichen den Namen der IMAP-Datendatei eintragen)  
        Set objFolderIMAP01 = Outlook.Session.Folders("MailBox1")  
        Set objFolderIMAP02 = Outlook.Session.Folders("MailBox2")  
        Set objFolderIMAP03 = Outlook.Session.Folders("MailBox3")  
        
        'Alle Unterordner selektieren (und damit aufklappen)  
        Call selectAllFolderRec(objFolderIMAP01)
        Call selectAllFolderRec(objFolderIMAP02)
        Call selectAllFolderRec(objFolderIMAP03)
        
        'Posteingang als Startordnder auswählen  
        Call Outlook.ActiveExplorer.SelectFolder(objFolderIMAP01.Folders("Posteingang"))  
        Call Outlook.ActiveExplorer.SelectFolder(objFolderIMAP02.Folders("Posteingang"))  
        Call Outlook.ActiveExplorer.SelectFolder(objFolderIMAP03.Folders("Posteingang"))  
    End Sub
    
    Sub selectAllFolderRec(objFolder As Outlook.Folder)
        Dim lngCounter As Long
        Dim bolSkipSelect As Boolean
        bolSkipSelect = False
        For lngCounter = 1 To objFolder.Folders.Count
            If objFolder.Folders(lngCounter).Folders.Count > 0 Then
                Call selectAllFolderRec(objFolder.Folders(lngCounter))
              Else
                If bolSkipSelect = False Then
                    Call Outlook.ActiveExplorer.SelectFolder(objFolder.Folders(lngCounter))
                    bolSkipSelect = True
                End If
            End If
        Next lngCounter
    End Sub


Dann wollte ich die Zeile mit ....
If objFolder.Folders(lngCounter).Folders.Count > 0 Then
mit diesem ersetzen....
If objFolder.Folders(lngCounter).Folders.Count > 0 And objFolder.Folders(lngCounter).Folders.UnReadItemCount > 0 Then

Leider wird die Funktion nicht akzeptiert, konnte leider auch nicht herausfinden, warum.

Kann mir jemand die IF-Abfrage um die Abfrage von ungelesenen Emails erweitern, damit nur dann die Postfächer aufgeklappt werden?

BESTEN DANK!

Content-Key: 333874

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

Ausgedruckt am: 28.03.2024 um 21:03 Uhr

Mitglied: 132692
132692 01.04.2017, aktualisiert am 02.04.2017 um 00:59:26 Uhr
Goto Top
Private Sub Application_MAPILogonComplete()
    arrNameOfStores = Array("NAME DES ERSTEN ACCOUNTS","NAME DES ZWEITEN ACCOUNTS","NAME DES DRITTEN ACCOUNTS")  
    For i = 0 to UBound(arrNameOfStores)
      Set fldrPosteingang = Session.Stores.item(arrNameOfStores(i)).GetDefaultFolder(olFolderInbox)
      OpenFolders fldrPosteingang
    Next
End Sub

Sub OpenFolders(ByVal fldr As Folder)
    For Each f In fldr.Folders
        If f.Folders.count > 0 Then
            OpenFolders f
        Else
            if f.UnreadItemCount > 0 then
                ActiveExplorer.SelectFolder f
            end if
        End If
    Next
End Sub
Angepasst, Ursprungscode von hier:
Outlook mit geöffneten Konten starten.


Für deinen Code statt Zeile 32 das hier:
    if objFolder.Folders(lngCounter).UnreadItemCount > 0 then
        Call Outlook.ActiveExplorer.SelectFolder(objFolder.Folders(lngCounter).Parent)
    end if
Gruß p.
Mitglied: chgs2011
chgs2011 01.04.2017 um 20:52:36 Uhr
Goto Top
Danke für die Infos, klappt bei mir leider alles nicht ... es werden noch immer ALLE IMAP-Konten aufgeklappt, egal ob ungelesene Emails enthalten sind oder nicht.

Ich weis leider nicht mehr weiter ...
Mitglied: 132692
132692 02.04.2017 aktualisiert um 01:02:41 Uhr
Goto Top
Dann haben wir uns missverstanden, der Code öffnet nur Unterordner die ungelesene Mails enthalten, der Posteingang wird immer geöffnet, aber wenn du das nicht willst kannst du ja leicht anpassen. Klappt hier problemlos!
Das du dazu natürlich die Zeilen 18,19,20 deines Codes entfernen musst, sollte ja klar sein, denn die öffnen ja ohne Bedingung immer die Accounts!!!!!
Habe es oben entsprechend ergänzt.