Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Outlookordner in Treeview anzeigen
zurück: Hilfe bei Ankreuzformularerstellung weiter: Listbox Auslesen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
ohb71
Fortgeschrittener Access-VBA Liebhaber


Verfasst am:
07. Feb 2011, 05:37
Rufname:
Wohnort: Nürnberg


Outlookordner in Treeview anzeigen - Outlookordner in Treeview anzeigen

Nach oben
       Version: Office 2003

Guten Morgen!

Erst mal ein Danke an das Forum hier! Die Fragen und Antworten haben mir viel geholfen!

Jetzt aber zu meinen Problem:
Ich möchte in einem Formular via Treeview die Ordner aus Outlook darstellen. Dazu habe ich folgenden Code gebaut:
Code:
    Dim tvwFolders As MSComctlLib.TreeView
    Dim objApp As Outlook.Application
    Dim objNamespace As NameSpace
    Dim olFolder As MAPIFolder
    Dim olAblage As Outlook.MAPIFolder

    Set objApp = Outlook.Application
    Set objNamespace = objApp.GetNamespace("MAPI")
    Set olFolder = objApp.Session.Folders.Item("Persönliche Ordner")
    For Each olAblage In olFolder.Folders
        If Not olFolder.DefaultItemType = olMailItem Then GoTo weiter
        Me.tvwFolders.Nodes.Add , 4, olAblage.EntryID, olAblage.Name
        Me.tvwFolders.Nodes(olFolder.EntryID).Expanded = True
weiter:
    Next olAblage
    Me.tvwFolders.Nodes(1).Selected = True
Er zeigt mir aber nur die Ordner in einer Ebene an (ab Persönliche Ordner) an, die Unterordner die existieren werden aber nicht angezeigt. Zudem wollte ich das Persönliche Ordner als erste Node angezeigt wird und dann unter diesem alles anderen Mailordner und dann jeweils die Unterordner.

Ich habe mich schon viel umgeguckt, aber keines hat mir eine Lösung gebracht.
Wer hat dazu Vorschläge oder Rat? Ich bauer jetzt schon 2 Tage daran herum. Vielen Dank im Vorraus!

Grüße aus Nürnberg,

ohb71
Nachtrag: ohb71 am 08. Feb 2011 um 09:33 hat folgendes geschrieben:
Guten Morgen!

Ich habe es dann soweit angepasst, dass jetzt in meinem Treeview Element die Ordner richtig angezeigt werden. Dazu habe ich folgenden Code verwendet:
Code:
    'from http://www.microsoft.com/OutlookDev/Articles/outprog.htm
    Dim colMapiFolders As Outlook.Folders
    Dim MapiFolder As Outlook.MapiFolder
    Dim colFolders As Outlook.Folders
    Dim Folder As Outlook.MapiFolder
    Dim nodX As Node
    Dim strMapiFolder As String
    Dim strFolder As String
    Dim strFolderKey As String
    Dim strKey As String
    Dim treOutl As TreeView
   
    mOutlookbas.CreateOutlookInstance
    'Begin the tree at the root
    Set nodX = treOutlookFolders.Nodes.Add(, , "root", "Outlook: " _
                                                  & gobjNamespace.CurrentUser)
    'Walk the MAPI Folder tree
    Set colMapiFolders = gobjNamespace.Folders
    For Each MapiFolder In colMapiFolders
        strMapiFolder = MapiFolder.Name
        Set nodX = treOutlookFolders.Nodes.Add("root", tvwChild, _
                                               strMapiFolder, strMapiFolder)
        'Folders within MapiFolders
        Set colFolders = MapiFolder.Folders
        For Each Folder In colFolders
            If Not Folder.DefaultItemType = olMailItem Then GoTo weiter2
            strFolder = Folder.Name
            strFolderKey = Folder.EntryID
            Set nodX = treOutlookFolders.Nodes.Add(strMapiFolder, tvwChild, _
                                                   strFolderKey, strFolder)
            nodX.EnsureVisible
            nodX.Expanded = True
            'Folders within Folders
            treOutl = treOutlookFolders
            EnumerateFolders Folder, treOutl
weiter2:
        Next Folder
    Next MapiFolder
Das wird im Form_Open Ereignis ausgeführt. Dazu wird noch folgende Funktion benötigt:
Code:
Public gobjOutlook As Outlook.Application
Public gobjNamespace As Outlook.NameSpace
Public gobjDefaultFolder As Outlook.MapiFolder
Private mbNewInstance As Boolean            'true if the new instance of outlook was started, false - if an existing instance is used
Public gstrApplicationName As String        'application name

Public Function CreateOutlookInstance() As Boolean
'Create application and namespace root objects
    On Error Resume Next
    'search for existing outlook object
    mbNewInstance = False
    Set gobjOutlook = GetObject(, "Outlook.Application")
    Err.Clear
    'if there is no Outlook instance started we should create it now
    If gobjOutlook Is Nothing Then
        gobjOutlook = CreateObject("Outlook.Application")
        mbNewInstance = True
    End If
    If Err Then
        MsgBox "Could not create Outlook Application object!", vbCritical
        Exit Function
    End If
    'obtaining the namespace object - the storage of all outlook folders
    Set gobjNamespace = gobjOutlook.GetNamespace("MAPI")
    If Err Then
        MsgBox "Could not create MAPI Namespace!", vbCritical
        Exit Function
    End If
    'we need to have the default folder to be used when user enters incorrect folder path
    Set gobjDefaultFolder = gobjNamespace.GetDefaultFolder(olFolderInbox)
    If Err Then
        MsgBox "Could not get the default folder!", vbCritical
        Exit Function
    End If
    gstrApplicationName = Application.Name
    CreateOutlookInstance = True
End Function

'This function can be called recursively to enumerate all the child folders of a given MAPIFolder object.
'EnumerateFolders uses the Count property of the parent folder's Folders collection to determine if there are additional folders to be enumerated.
'see http://www.microsoft.com/OutlookDev/Articles/outprog.htm
Function EnumerateFolders(objParentFolder As Object, treOutl As MSComctlLib.TreeView) As Integer
    Dim colchildFolders As Outlook.Folders
    Dim ChildFolder As Outlook.MapiFolder
    Dim strChildFolder As String
    Dim strChildFolderKey As String
    Dim strFolderKey As String
    Dim strFolder As String
    Dim nodX As Node
    Dim treOutlookFolders As MSComctlLib.TreeView
    'Dim treOutl As TreeView
   
    Set colchildFolders = objParentFolder.Folders
    If colchildFolders.Count <> 0 Then
        strFolderKey = objParentFolder.EntryID
        strFolder = objParentFolder.Name
        For Each ChildFolder In colchildFolders
            strChildFolder = ChildFolder.Name
            strChildFolderKey = ChildFolder.EntryID
            nodX = treOutl.Nodes.Add(strFolderKey, tvwChild, strChildFolderKey, strChildFolder)
            nodX.EnsureVisible
            nodX.Expanded = True
            EnumerateFolders ChildFolder, treOutl
        Next ChildFolder
    End If
End Function
Beide Funktionen habe ich in mOutlookBas Modul abgelegt.

Soweit passt es ansich, trotzdem schafft der Code es nicht, mir die Unterordner aber 2.ten Ebene anzuzeigen, obwohl ich im Schrittmodus ersehen kann, dass die Funktion EnumerateFolder richtig arbeitet und die richtigen Namen und Ordner erkennt und entsprechend die Varaiblen befüllt.

Woran kann das liegen? Ist die Tiefe des Treeview irgendwie beschränkt oder habe ich die Eigenschaften falsch gesetzt? Ich bin so langsam am Verzweifeln.

Wer hat noch rat und kann mir weiterhelfen?

Die selbe Frage wurde hier gestellt: Lösungsansatz zu Outlook Ordner als Treeview

Mfg

Gernot
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Leer und ausgefüllte Felder anzeigen 1 Fabs 613 23. Feb 2006, 09:38
rita2008 Leer und ausgefüllte Felder anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: nur die ersten drei Abfrageergebnisse anzeigen 3 Gloem 1503 17. Feb 2006, 19:12
steffen0815 nur die ersten drei Abfrageergebnisse anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: doppelte einträge (nur von einem Feld) nicht anzeigen 1 bweinhap 1213 09. Feb 2006, 18:05
lothi doppelte einträge (nur von einem Feld) nicht anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: Minuszeiten auswerten und anzeigen 3 pelowi 890 06. Feb 2006, 12:42
pelowi Minuszeiten auswerten und anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: tageswert anzeigen 3 heirnele 588 26. Jan 2006, 12:35
Willi Wipp tageswert anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: Aktuellster Datumswert anzeigen+dazugehörige Daten (AXP) 1 cubus 715 27. Okt 2005, 10:33
cubus Aktuellster Datumswert anzeigen+dazugehörige Daten (AXP)
Keine neuen Beiträge Access Tabellen & Abfragen: Keine Datensätze aber dennoch Wert 0 anzeigen 1 Dracula 714 25. Okt 2005, 14:02
stpimi Keine Datensätze aber dennoch Wert 0 anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: nur einmal anzeigen 4 bohne 674 21. Okt 2005, 16:22
bohne nur einmal anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: Berechnung im Listenfeld anzeigen? 3 Schnoop 804 20. Okt 2005, 08:24
Timbo Berechnung im Listenfeld anzeigen?
Keine neuen Beiträge Access Tabellen & Abfragen: Abos die ablaufen Anzeigen lassen ? 1 reneschaub 477 04. Okt 2005, 18:56
jens05 Abos die ablaufen Anzeigen lassen ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage in Formular anzeigen, und dann sortieren 1 christian_10 597 22. Aug 2005, 13:28
lothi Abfrage in Formular anzeigen, und dann sortieren
Keine neuen Beiträge Access Tabellen & Abfragen: gruppieren-beide texteintraege anzeigen 7 paty 1196 14. Jun 2005, 02:54
tobes gruppieren-beide texteintraege anzeigen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: MS Frontpage