didistei
Goto Top

Outlook mit geöffneten Konten starten.

Hallo,
habe mir mal Outlook aus meinem Office 2010-Paket installiert und möchte es eigendlich durch Thunderbird ersetzten. Das einrichten meiner vier E-mail Konten, das exportieren meiner e-mails ins Outlook-Format usw. klappte alles wunderbar. Habe also jetzt nach dem Outlook-Start in der linken Spalte "Meine Ordner" und darunter meine vier Konten, jedes bezeichnet mit meiner E-mail Adresse.
Meine Frage: Wie kann ich Outlook so einstellen, das nach dem Outlook-Start meine vier Konten immer direkt aufgeklappt sind (also auch immer die Unterordner "Posteingang","Gesendete Elemente","Papierkorb","Drafts","Entwürfe","Junk" zu sehen sind) ?
Auch wenn ich in ANSICHT , ANSICHT ÄNDERN , AKTUELLE ANSICH FÜR ANDERE E-MAIORDNER ÜBERNEHMEN... und da alle Ordner meiner vier E-mail Adressen markiere sind meine E-mail Konten nach einem Outlook Neustart immer wieder zugeklappt und ich muss sie jedesmal wieder von Hand aufklappen. Was mache ich da Falsch ?

Content-ID: 211459

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

Ausgedruckt am: 25.11.2024 um 23:11 Uhr

jsysde
jsysde 14.07.2013 um 11:50:55 Uhr
Goto Top
Moin moin,

Outlook 2010? 2013? OS?
Ich habe hier Outlook 2013 (auf Windows 7) laufen und habe auch mehrere Konten eingebunden. Outlook startet i.d.R. so, wie du es verlassen hast, soll heissen: Klappe ich alle Konten auf schließe Outlook, startet es beim nächsten Start mit "geöffneten" Konten.

Cheers,
jsysde
GuentherH
GuentherH 14.07.2013 um 11:50:56 Uhr
Goto Top
Soviel ich weiß, gibt es diese Einstellung nicht. Du kannst unter Optionen -> Erweitert -> Outlook in diesem Ordner starten einstellen, welcher Ordner bei Start angezeigt werden soll.

Wobei die Anzeige mit Sicherheit abhänig ist, ob POP3, IMAP oder Exchange Konten verwendet werden.

LG Günther
certifiedit.net
certifiedit.net 14.07.2013 aktualisiert um 12:50:33 Uhr
Goto Top
Dafür gibt es ein vbs Skript. Nativ klappt das bei vielen Konten nicht.

Genauen Namen und Quelle weiss ich leider nicht mehr, einfach mal googlen.
colinardo
colinardo 14.07.2013, aktualisiert am 26.11.2014 um 18:38:52 Uhr
Goto Top
Hallo didistei,
das ist bei IMAP-Konten in Outlook ein normales Verhalten. Diesen, leider lästigen Umstand, kannst du nur mit einem Script folgendermaßen beheben:
Mit ALT-F11 in Outlook den VBA-Editor starten und diesen Code in "ThisOutlookSession" einfügen. In der zweiten Zeile musst du noch den Namen des Accounts angeben den du Standardmäßig geöffnet haben willst.
Private Sub Application_MAPILogonComplete()
    strNameOfStore = "NAME_DEINES_ACCOUNTS"  
    Set fldrPosteingang = Session.Stores.item(strNameOfStore).GetDefaultFolder(olFolderInbox)
    ActiveExplorer.SelectFolder fldrPosteingang
End Sub
das ganze kannst du natürlich auch für mehrere Accounts machen, so dass auch diese geöffnet sind wenn du Outlook startest:
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)
      ActiveExplorer.SelectFolder fldrPosteingang
    Next
End Sub
Und wenn dann noch alle Unterordner des Posteingangs mit aufgeklappt werden sollen, nehme man folgendes Rezept:
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
      ActiveExplorer.SelectFolder 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
            ActiveExplorer.SelectFolder f
        End If
    Next
End Sub
Wenn deine Accounts alle mit der jeweiligen E-Mail-Adresse benannt sind könntest sie alternativ auch wie folgt in einer Schleife nacheinander öffnen:
Private Sub Application_MAPILogonComplete()
    For Each store In Application.Session.Stores
        If InStr(1, store.DisplayName, "@") > 0 Then  
            ActiveExplorer.SelectFolder store.GetDefaultFolder(olFolderInbox)
        End If
    Next
End Sub

Grüße Uwe
didistei
didistei 14.07.2013 um 13:42:07 Uhr
Goto Top
Hallo. Also, ich verlasse Outlook mit geöffneten Ordner. Jedoch sind die Ordner beim Neustart immer wieder geschlossen.
Die Option "Outlook in diesem Ordner starten" hab ich eingestellt. Aber trotzdem das gleiche wie oben, immer wieder geschlossene Ordner beim Neustart. Trotzdem Danke.
Finde auch keine Einstellung wie zb. bei Firefox, das eben so gestartet werden soll, wie es verlassen wurde.
didistei
didistei 14.07.2013 um 13:43:44 Uhr
Goto Top
Hallo Uwe,
wow, danke erstmal. Werds gleich mal ausprobieren und berichte dann.
didistei
didistei 17.07.2013 um 15:45:10 Uhr
Goto Top
Hallo. Danke nochmal für die Tips. Der Hintergrund mit den geöfneten Ordnern war eigendlich nur der, da mir OE dann die neuen Mails anzeigt. Aber selbst das klappt nicht. Ich muss immer erst meine vier emailkonten von Hand öffnen, um zu ehen, ob neue mails anliegen. Bin da wirklich sämtliche settings durchgegangen. OE ist leider nur in der Lage, ein Emailkonto beim Start geöffnet zu zeigen. Auch wenn ich OE mit allen vier geöffneten Konten schließe, sind nach dem neustart von OE immer nur 1 Konto offen und die anderen drei müssen dann immer erst von Hanf geöffnet werden.
Das heisst für mich: OE echt die letzte Krücke. Bleibe da lieber bei Thunderbird. Das geht da nähmlich einwandfrei.
colinardo
colinardo 17.07.2013 um 15:49:09 Uhr
Goto Top
Moment mal, von OE = Outlook Express war hier nie die Rede ....sondern von Outlook aus dem Office 2010 -Paket wie du in deinem Thread geschrieben hast.
didistei
didistei 17.07.2013 um 20:14:40 Uhr
Goto Top
Sorry ja natürlich. Meinte Outlook aus dem Office 2010 Paket.
certifiedit.net
certifiedit.net 17.07.2013 um 20:20:13 Uhr
Goto Top
Dann machst du etwas falsch.
colinardo
colinardo 17.07.2013 um 20:57:38 Uhr
Goto Top
Zitat von @didistei:
OE immer nur 1 Konto offen und die anderen drei müssen dann immer erst von Hanf geöffnet werden.
Hanf bekommst du hier nicht, da musst du schon in Nachbars Keller nachsehen...
Das heisst für mich: OE echt die letzte Krücke. Bleibe da lieber bei Thunderbird. Das geht da nähmlich einwandfrei.
Wer nämlich mit h schreibt ...

Spaß beiseite, du hast meinen oben geposteten Code in deinem VBA Projekt wahrscheinlich nicht mit einer Code-Signatur versehen (Menü Extras) und im Sicherheitscenter nicht eingestellt das nur signierter Code ausgeführt werden darf. Standard in Outlook ist nämlich: keinen VBA-Code auszuführen. Wenn du das korrigiert hast kommt beim nächsten Start von Outlook die Abfrage ob du der Codesignatur mit der du das VBA-Projekt signiert hast vertraust. Danach läufts einwandfrei ...
didistei
didistei 18.07.2013 um 18:04:06 Uhr
Goto Top
Hallo Uwe.
Du bist ja wohl der Allergrößte (Gris, Schrei, Freu). Es funktioniert mit all meinen Accounts. Habe im Outlook unter OPTIONEN , SICHERHEITSCENTER , EINSTELLUNGEN FÜR DAS SICHERHEITSCENTER , EINSTELLUNGEN FÜR MACROS die Option:
Alle Macros aktivieren (Nicht empfohlen...) usw. aktiviert, und schon läuft alles mit Deinem Script. Genauso wollt ichs haben. Hoffe, das wahr jetzt richtig, mit der Macro-Aktivierung ?!
Nochmals Recht Herzlichen Dank. !!!!!!!
chgs2011
chgs2011 01.04.2017 um 20:57:04 Uhr
Goto Top
Super Lösung, ich versuche gerade mein VBA zu erweitern, nun habe ich diese Lösung gesehen.

Wir könnte man dies umbauen, dass NUR Ordner/Postfächer aufgeklappt werden, wenn ungelesene Mails enthalten sind?
colinardo
colinardo 02.04.2017, aktualisiert am 11.12.2018 um 16:51:16 Uhr
Goto Top
Hallo chgs2011.
Zitat von @chgs2011:
Wir könnte man dies umbauen, dass NUR Ordner/Postfächer aufgeklappt werden, wenn ungelesene Mails enthalten sind?
Das ist nur möglich wenn du vor dem Schließen von Outlook alle Stores komplett zu klappst, denn es gibt keine VBA-Methode im Outlook-Objektmodell um einmal geöffnete Stores wieder programmatisch zu schließen (Sendkeys etc. ist unzuverlässig und funktioniert nicht überall).

Wenn du also alle Stores vor dem Beenden schließt (zwingende BEDINGUNG!! damit die seit dem letzten Beenden von Outlook geöffneten Stores geschlossen bleiben) geht das mit folgendem Code:
Private Sub Application_MAPILogonComplete() 
    Dim hasUnread As Boolean
    arrNameOfStores = Array("Persönlicher Ordner", "user@domain.net")  
    For Each Store In arrNameOfStores
        Set fldrPosteingang = Session.Stores(Store).GetDefaultFolder(olFolderInbox)
        OpenFolders fldrPosteingang
    Next
End Sub

Sub OpenFolders(ByVal fldr As Folder)
    If fldr.UnReadItemCount > 0 Then
        ActiveExplorer.SelectFolder fldr
    End If
    For Each f In fldr.Folders
        OpenFolders f
    Next
End Sub
Damit werden in der Ordnerstruktur eines Stores alle Knoten aufgeklappt die mindestens eine ungelesene Mail enthalten

Grüße Uwe
chgs2011
chgs2011 02.04.2017 um 11:02:43 Uhr
Goto Top
VIelen Dank für den Tipp, den muss man erst mal wissen face-smile
Gut, wenn ich nun alle zuklappe und Outlook neu starte, öffnet die Funktion die Ordner.
Werden diese dann wieder geschlossen, wenn alle Mails gelesen wurden, oder muss man das manuell tun?


Fehler, Anzahl an Argumenten oder Zuweisung zu Eigenschaft sei falsch?!
OpenFolders

Habe 17 Konten, habe daher diese eingetragen:
arrNameOfStores = Array("Konto 1", "Konto 2", ...)
colinardo
colinardo 02.04.2017 aktualisiert um 11:27:05 Uhr
Goto Top
Zitat von @chgs2011:
Werden diese dann wieder geschlossen, wenn alle Mails gelesen wurden, oder muss man das manuell tun?
Natürlich musst du sie manuell schließen, es gilt das oben bereits gesagte, den Top-Store(Root des Stores) zu schließen reicht, alle Unterordner werden dann automatisch zusammengeklappt!
Fehler, Anzahl an Argumenten oder Zuweisung zu Eigenschaft sei falsch?!
OpenFolders
Sorry war nur ein Tippfehler, da ich die Funktion anderweitig mit anderen Parametern verwendet habe, ist oben korrigiert.
chgs2011
chgs2011 02.04.2017 aktualisiert um 12:26:38 Uhr
Goto Top
Super danke dir!

Habe nun das Script in ThisOutlookSession, beim starten werden die Postfächer nun geöffnet, KLASSE!

Muss nur nochmals fragen, sollten die Postfächer auch während der Sitzung autom. aufklappen, wenn eine neue Email eintrifft?
Dies war aktuell nicht der Fall face-sad ... habe daher das Script auch nochmals als Modul erstellt, um es manuell ausführen zu können.

Wäre klasse, wenn ich irgendwie die 2 Punkte noch realisiert bekommen würde:
1.) während Sitzung Postfach bei neuen Emails aufklappen
2.) Postfach schließen, wenn alle Mails gelesen sind / bzw. schließen beim starten von Outlook wenn keine ungelesenen vorhanden sind

Du meintest bzgl. Punkt 2.), dass dies ja wohl technisch nicht möglich ist?!
Kann man das nicht per RemoveStore ermöglichen?
colinardo
colinardo 02.04.2017 aktualisiert um 13:15:29 Uhr
Goto Top
Zitat von @chgs2011:
Muss nur nochmals fragen, sollten die Postfächer auch während der Sitzung autom. aufklappen, wenn eine neue Email eintrifft?
Nein, das war ja auch nicht deine Anforderung oben!
Dies war aktuell nicht der Fall face-sad ... habe daher das Script auch nochmals als Modul erstellt, um es manuell ausführen zu können.
Wäre klasse, wenn ich irgendwie die 2 Punkte noch realisiert bekommen würde:
1.) während Sitzung Postfach bei neuen Emails aufklappen
Kein Problem, einfach im NewMail Event die Prozedur erneut durchlaufen lassen.
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim varEntryIDs, objItem As Object, i As Integer
    varEntryIDs = Split(EntryIDCollection, ",")  
    For i = 0 To UBound(varEntryIDs)
        Set objItem = Application.Session.GetItemFromID(varEntryIDs(i))
        OpenFolders objItem.Parent.Store.GetDefaultFolder(olFolderInbox)
    Next
End Sub

Sub OpenFolders(ByVal fldr As Folder)
    If fldr.UnReadItemCount > 0 Then
        ActiveExplorer.SelectFolder fldr
    End If
    For Each f In fldr.Folders
        OpenFolders f
    Next
End Sub
2.) Postfach schließen, wenn alle Mails gelesen sind / bzw. schließen beim starten von Outlook wenn keine ungelesenen vorhanden sind

Du meintest bzgl. Punkt 2.), dass dies ja wohl technisch nicht möglich ist?!
Kann man das nicht per RemoveStore ermöglichen?
Du kannst den Store komplett schließen/entfernen, dann musst du Ihn aber beim Öffnen wieder neu hinzufügen. Aber ob er dann geöffnet oder geschlossen ist eher Zufall als die Regel. Also keine vernünftige Umsetzung. Ob du das machst bleibt deine Entscheidung. Ich würde nicht zu viel in den Ablauf der Users eingreifen, denn da gibt es einige Fallen mit denen du dann die User sehr verwirren kannst wenn sich von selbst irgendwas öffnet schließt etc.

Das sind aber jetzt kein Thema mehr für diesen Thread. Bei Anfragen gerne kostenpflichtig per PM , aber hier sollten wir es belassen, auch im Sinne von Diskussionsrichtlinien - die Regeln zu unseren Inhalten . Danke!

Grüße Uwe
chgs2011
chgs2011 02.04.2017 um 20:01:32 Uhr
Goto Top
Das hat mir schon sehr geholfen, VIELEN DANK für deine Zeit!
tomscrw
tomscrw 19.09.2018 um 12:57:13 Uhr
Goto Top
Hallo Uwe, ich hätte eine Frage.

Ich benutze Outlook 2016 (Office 365, Exchange) und habe heute folgendes Script von dir ausprobiert:
Private Sub Application_MAPILogonComplete() 
    arrNameOfStores = Array("NamePostfach1","NamePostfach2","NamePostfach3")   
    For i = 0 to UBound(arrNameOfStores) 
      Set fldrPosteingang = Session.Stores.item(arrNameOfStores(i)).GetDefaultFolder(olFolderInbox) 
      ActiveExplorer.SelectFolder fldrPosteingang 
    Next 
End Sub

Mit diesem funktioniert es zwar dass sich die Postfächer automatisch aufklappen, aber die Nachrichtenvorschau und der Lesebereich wird dafür "ausgeblendet" (bleibt einfach weiß).
Der Ordnerbereich ist noch da und wenn ich zwischen den einzelnen Ordnern/Postfächern wechsle, blitzt die Vorschau und der Lesebereich immer wieder kurz auf, verschwindet dann aber leider wieder.

Muss ich im Script vielleicht irgendetwas an meine Outlook-Version anpassen?

Grüße Thomas
ChinghissKhan
ChinghissKhan 30.10.2018 um 13:19:17 Uhr
Goto Top
Herzlichen Dank - hat einwandfrei geklappt!
Habe schon etliche Code-Vorschläge versucht, manche waren ellenlang, keine hatten funktioniert.
Jetzt muss ich nur noch "didistei" nach hanf fragen face-smile
chriss312
chriss312 11.12.2018 aktualisiert um 16:34:12 Uhr
Goto Top
Hallo Thomas,

wie konntest du das Problem mit dem ausgeblendeten Nachrichtenvorschau und dem Lesebereich lösen?
Sobald ich ein Script ausprobiere, habe ich das gleiche Problem.

Gruß

Christoph


Zitat von @tomscrw:

Hallo Uwe, ich hätte eine Frage.

Ich benutze Outlook 2016 (Office 365, Exchange) und habe heute folgendes Script von dir ausprobiert:
Private Sub Application_MAPILogonComplete() 
>     arrNameOfStores = Array("NamePostfach1","NamePostfach2","NamePostfach3")   
>     For i = 0 to UBound(arrNameOfStores) 
>       Set fldrPosteingang = Session.Stores.item(arrNameOfStores(i)).GetDefaultFolder(olFolderInbox) 
>       ActiveExplorer.SelectFolder fldrPosteingang 
>     Next 
> End Sub

Mit diesem funktioniert es zwar dass sich die Postfächer automatisch aufklappen, aber die Nachrichtenvorschau und der Lesebereich wird dafür "ausgeblendet" (bleibt einfach weiß).
Der Ordnerbereich ist noch da und wenn ich zwischen den einzelnen Ordnern/Postfächern wechsle, blitzt die Vorschau und der Lesebereich immer wieder kurz auf, verschwindet dann aber leider wieder.

Muss ich im Script vielleicht irgendetwas an meine Outlook-Version anpassen?

Grüße Thomas
ChinghissKhan
ChinghissKhan 11.12.2018 um 23:55:32 Uhr
Goto Top
Bei mir läuft das auf Outlook 2010, zu anderen Versionen kann ich leider keinen Rat geben.
chriss312
chriss312 12.12.2018 um 09:39:58 Uhr
Goto Top
Zitat von @ChinghissKhan:

Bei mir läuft das auf Outlook 2010, zu anderen Versionen kann ich leider keinen Rat geben.

Danke ChinghissKhan für dein Einwand mit der Version. Das betrifft bei mir wie bei Thomas (tomscrw) die Version Outlook 2016.

Gruß

Christoph
tomscrw
tomscrw 13.12.2018 um 08:55:10 Uhr
Goto Top
Hallo Christoph,

ich konnte leider auch noch keine Lösung zu dem Thema finden.
Ist ziemlich schade weil es ansiech ja funktioniert, nur anscheinend nicht zu 100% kompatibel zu sein scheint.

LG Thomas
colinardo
colinardo 13.12.2018 aktualisiert um 09:54:43 Uhr
Goto Top
Zitat von @tomscrw:

Hallo Christoph,

ich konnte leider auch noch keine Lösung zu dem Thema finden.
Ist ziemlich schade weil es ansiech ja funktioniert, nur anscheinend nicht zu 100% kompatibel zu sein scheint.
Servus @tomscrw und @chriss312 .
Das Problem liegt definitiv nicht an den Skripten, die behandeln die Ansicht in kleinster Weise, sondern meist an der verwendeten Grafik-Hardware oder an korrupten (zu großen Profilen), oder wenn die Kisten zu langsam sind, denn hier funktioniert das bei mindestens 10 Kisten mit aktuellstem O2016 oder auch 2019 problemlos. Also entweder mal die Grafikbeschleunigung in Outlook abschalten, Grafiktreiber wechseln und Addins deaktivieren, oder zwischen den Schleifendurchläufen eine Pause einfügen (wenn die Kisten es zeitlich nicht gebacken bekommen)!

Grüße Uwe
chriss312
chriss312 13.12.2018 um 15:24:05 Uhr
Goto Top
Hallo Uwe,

danke für deinen Beitrag. Leider hat mir das nicht weitergeholfen.
Das interessante ist, dass der Inhalt in einem neuen Fenster angezeigt wird.

Ich hab das Problem zwar gelöst bekommen, aber die Ursache bleibt weiterhin unbekannt.

ThisOutlookSession:
Option Explicit
 
Private Declare Function SetTimer Lib "user32.dll" ( _  
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long
 
Private Sub Application_Startup()
   
    Dim lngWait As Long
 
    On Error Resume Next
 
    lngWait = 5 ' 5 Sekunden warten  
    
    Call StartTimer(lngWait)
 
End Sub
 
Private Sub StartTimer(ByVal lngIntervall As Long)
    g_lngTimer = SetTimer(0&, 0&, lngIntervall * 1000, AddressOf Start_OpenFolders)
End Sub


Modul1
Option Explicit
 
Public g_lngTimer As Long
 
Private Declare Function KillTimer Lib "user32.dll" ( _  
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long) As Long
 
Public Sub Start_OpenFolders()
 
    On Error Resume Next
    
    Call KillTimer(0&, g_lngTimer)

    Dim arrNameOfStores As Variant
    Dim i, fldrPosteingang

    arrNameOfStores = Array("NamePostfach1", "NamePostfach2")  

    For i = 0 To UBound(arrNameOfStores)
      Set fldrPosteingang = Session.Stores.Item(arrNameOfStores(i)).GetDefaultFolder(olFolderInbox)
      OpenFolders fldrPosteingang
      ActiveExplorer.SelectFolder fldrPosteingang
    Next
End Sub

Sub OpenFolders(ByVal fldr As Folder)
    Dim f
    For Each f In fldr.Folders
        If f.Folders.Count > 0 Then
            OpenFolders f
        Else
            ActiveExplorer.SelectFolder f
        End If
    Next
End Sub

Gruß

Christoph
colinardo
colinardo 16.12.2018 aktualisiert um 13:05:28 Uhr
Goto Top
aber die Ursache bleibt weiterhin unbekannt.
Das wird daher kommen das die SelectFolder Methode zwar via Code noch vorhanden ist, im aktuellen Objektmodell offiziell aber nicht mehr supported wird. Sie taucht auch in der aktuellen API-Dokumentation nicht mehr auf, während sie in der älteren Doku noch vorhanden ist.
https://docs.microsoft.com/de-de/office/vba/api/outlook.explorer

Da das Problem der initial geschlossenen Stores ja in aktuellen Versionen nicht mehr vorhanden ist, wird es IMHO in neueren Versionen auch nicht mehr benötigt da die Ordner-Ansicht den Status beim Beenden von Outlook speichert.
SuperDaniel
SuperDaniel 28.09.2019 aktualisiert um 00:38:05 Uhr
Goto Top
Danke für den Code, klappt super.

Gibt es auch eine Möglichkeit Ordner zu überspringen?

Nutze Outlook 2010

edit:

habe es jetzt erstmal so gemacht, geht das auch anders? So das man in eine Zeile alle Ordner packen könnte Überspringe = "Ordner1,Ordner2,Ordner3,Ordner4"?

Sub OpenFolders(ByVal fldr As Folder)
For Each F In fldr.Folders
If F.Folders.Count > 0 Then
If Not (F = "Ordner1" Or F = "Ordner2" Or F = "Ordner3" Or F = "Ordner4") Then OpenFolders F
Else
ActiveExplorer.SelectFolder F
End If
Next
End Sub
colinardo
colinardo 28.09.2019 aktualisiert um 12:55:50 Uhr
Goto Top
Servus @SuperDaniel , willkommen auf Administrator.de!
Gibt es auch eine Möglichkeit Ordner zu überspringen?
geht das auch anders? So das man in eine Zeile alle Ordner packen könnte Überspringe = "Ordner1,Ordner2,Ordner3,Ordner4"?
Ja, nutze einfach ein Array, durchlaufe es in der Schleife und setze eine Variable, anhand dessen entscheidest du dann ob geöffnet werden soll oder nicht
Sub OpenFolders(ByVal fldr As Folder)
    Dim f As Folder, arrExclude As Variant, jumpOver As Boolean
    arrExclude = Array("Ordner1", "Ordner2")  
    For Each f In fldr.Folders
        If f.Folders.Count > 0 Then
            jumpOver = False
            For Each exclude In arrExclude
                If exclude = f.Name Then
                    jumpOver = True
                    Exit For
                End If
            Next
            If Not jumpOver Then OpenFolders f
        Else
            ActiveExplorer.SelectFolder f
        End If
    Next
End Sub
Alternativ lässt sich das auch mit "Regular Expressions" machen, aber da will ich dich jetzt nicht mit überfordern, außer du hast Interesse daran face-wink.

-edit- Hier noch die Regex Variante (Regex-Sonderzeichen in den Ordnernamen escapen, Mit der Methode hat man dann noch wesentlich Möglichkeiten Ordner auszuschließen, z.B. Ordner mit Nummer am Ende "Ordner\d+" usw. s. Dokumentation (Regular Expressions Tutorial) )
Private Sub Application_MAPILogonComplete()
    Dim strNameOfStore As String, regex As Object, arrExclude As Variant
    strNameOfStore = "NAME_DEINES_ACCOUNTS"  
    arrExclude = Array("Ordner1", "Ordner2")  
    Set regex = CreateObject("vbscript.regexp")  
    regex.IgnoreCase = True
    regex.Pattern = "^" & Join(arrExclude, "|") & "$"  
    OpenFolders Session.Stores.Item(strNameOfStore).GetDefaultFolder(olFolderInbox), regex
    Set regex = Nothing
End Sub

Sub OpenFolders(ByVal fldr As Folder, ByVal regexExclude As Object)
    Dim f As Folder, arrExclude As Variant, jumpOver As Boolean
    For Each f In fldr.Folders
        If f.Folders.Count > 0 Then
            If Not regexExclude.Test(f.Name) Then OpenFolders f, regexExclude
        Else
            ActiveExplorer.SelectFolder f
        End If
    Next
End Sub

Grüße Uwe
SuperDaniel
SuperDaniel 28.09.2019 aktualisiert um 15:00:55 Uhr
Goto Top
Super, Danke dir.

Ich nutze erstmal die erste Variante, die zweite ist mir noch zu hoch ^^ interessieren tun mich solche Sachen aber schon
Ralf42
Ralf42 11.10.2021 aktualisiert um 12:43:30 Uhr
Goto Top
Hallo Zusammen,
ein super Skript. Vielen Dank schon mal dafür face-smile

Wie kriegt man es denn hin, dass auch die Such-Ordner geöffnet werden?

Ich nutze diese Version:
Private Sub Application_MAPILogonComplete()
    arrNameOfStores = Array("USER@DOMAIN.DE")  
    For i = 0 To UBound(arrNameOfStores)
      Set fldrPosteingang = Session.Stores.Item(arrNameOfStores(i)).GetDefaultFolder(olFolderInbox)
      OpenFolders fldrPosteingang
      ActiveExplorer.SelectFolder 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
            ActiveExplorer.SelectFolder F
        End If
    Next
End Sub
colinardo
colinardo 11.10.2021 aktualisiert um 12:58:24 Uhr
Goto Top
Zitat von @Ralf42:
Wie kriegt man es denn hin, dass auch die Such-Ordner geöffnet werden?

Servus @Ralf42, willkommen auf Administrator.de!
z.B. so
Private Sub Application_MAPILogonComplete()
    Dim f As Folder, i As Integer, acc As Store, s As Store, fldrPosteingang As Folder, arrNameOfStores As Variant
    arrNameOfStores = Array("user@domain.tld")  
    ' for each store in array  
    For i = 0 To UBound(arrNameOfStores)
        Set s = Nothing
        ' check if store with name exists  
        For Each acc In Application.Session.Stores
            If LCase(acc.DisplayName) = LCase(arrNameOfStores(i)) Then
                Set s = acc
                Exit For
            End If
        Next
        
        If Not s Is Nothing Then
            Set fldrPosteingang = s.GetDefaultFolder(olFolderInbox)
            ' open folders of inbox  
            OpenFolders fldrPosteingang
            ' open search folders  
            For Each f In s.GetSearchFolders
                If Left(f.Name, 6) <> "MS-OLK" Then  
                    ActiveExplorer.SelectFolder f
                    Exit For
                End If
            Next
            ' select top inbox at the end  
            ActiveExplorer.SelectFolder fldrPosteingang
        Else
            MsgBox "Das Konto mit dem Namen '" & arrNameOfStores(i) & "' wurde nicht gefunden", vbExclamation  
        End If
        
    Next
End Sub

Sub OpenFolders(ByVal fldr As Folder)
    Dim f As Folder
    For Each f In fldr.Folders
        If f.Folders.Count > 0 Then
            OpenFolders f
        Else
            ActiveExplorer.SelectFolder f
        End If
    Next
End Sub
Grüße Uwe
Ralf42
Ralf42 11.10.2021 um 12:32:24 Uhr
Goto Top
Servus, und danke face-smile

Wenn ich den Code nehme, bekomme ich einen Laufzeitfehler 8004010f (vgl. Anhang)
screenshot 605 microsoft visual basic
colinardo
colinardo 11.10.2021 aktualisiert um 12:58:44 Uhr
Goto Top
Zitat von @Ralf42:
Wenn ich den Code nehme, bekomme ich einen Laufzeitfehler 8004010f (vgl. Anhang)
Du hast den Namen des Kontos nicht an deine Umgebung angepasst (Zeile 2) (Copy n Paste Syndrom face-wink)... Den habe ich aus guten Grund in meinem Code durch einen generischen ersetzt, denn echte E-Mail-Adressen sollte man hier im Forum aus gutem Grund nicht posten ...
In dem alten Code habe hatte ich solche Fehler nicht abgefangen (habe ich in der letzten Fassung nachgeholt).
Ralf42
Ralf42 11.10.2021 aktualisiert um 12:46:51 Uhr
Goto Top
Hm, Blindfisch, Ich bin...

Works like a charm und meine Mailadresse hab' ich auch rausgenommen...

Nochmal ein Feddes Danke face-smile
colinardo
colinardo 11.10.2021 um 12:58:57 Uhr
Goto Top
Immer gerne 👍