none
TreeView füllen - Ich begreife es einfach nicht

    Frage

  • Also ich versuche ein Treeview zu füllen - aber bekomme es so einfach nicht hin

    Einlesen der Ordnerstruktur von Outlook (latebinding)

    das durchlaufen der Ordner ... funktioniert nur das füllen des treeviews nicht

    Dim objNode As MSComctlLib.Node

    Dim objOutl As Object
    Dim oNameSpace As Object
    Dim AuflistungOrdnerEins As Object
    Dim AuflistungOrdnerZwei As Object
    Dim Ordner As Object
    Dim OrdnerListe As Object

    Set objOutl = GetObject(, "Outlook.Application")
    Set oNameSpace = objOutl.GetNamespace("MAPI")
    Set OrdnerListe = oNameSpace.Folders
    For Each AuflistungOrdnerEins In OrdnerListe
        Set objNode = objTreeview.Nodes.Add(, , AuflistungOrdnerEins.Name, AuflistungOrdnerEins.Name)
        For Each AuflistungOrdnerZwei In AuflistungOrdnerEins.Folders
            Set objNode = objTreeview.Nodes.Add(AuflistungOrdnerEins.Name, tvwChild, AuflistungOrdnerZwei.Name)
        Next AuflistungOrdnerZwei
    Next AuflistungOrdnerEins

    Set objOutl = Nothing
    Set oNameSpace = Nothing
    Set OrdnerListe = Nothing

    Könnte mir jemand meine fehler (aus dem Code) aufzeigen

    Donnerstag, 10. Dezember 2015 12:11

Antworten

  • Hallo Michael,

    habe Deinen Code mal etwas angepasst:

    Dim objNode As MSComctlLib.node
    Dim objChild As MSComctlLib.node
    
    Dim objOutl As Outlook.Application
    Dim oNameSpace As Outlook.NameSpace
    Dim AuflistungOrdnerEins As Outlook.MAPIFolder
    Dim AuflistungOrdnerZwei As Outlook.MAPIFolder
    Dim Ordner As Outlook.MAPIFolder
    Dim OrdnerListe As Outlook.Folders
    
    Dim tv As TreeView
    
    Set objOutl = New Outlook.Application
    Set oNameSpace = objOutl.GetNamespace("MAPI")
    Set OrdnerListe = oNameSpace.Folders
    For Each AuflistungOrdnerEins In OrdnerListe
        Set tv = TreeView1.Object
        Set objNode = tv.Nodes.Add(, , AuflistungOrdnerEins.Name, AuflistungOrdnerEins.Name)
    
        For Each AuflistungOrdnerZwei In AuflistungOrdnerEins.Folders
            tv.Nodes.Add objNode, tvwChild, AuflistungOrdnerZwei.Name, AuflistungOrdnerZwei.Name
        Next AuflistungOrdnerZwei
    Next AuflistungOrdnerEins
    Set objOutl = Nothing
    Set oNameSpace = Nothing
    Set OrdnerListe = Nothing

    Die entscheidenden Änderungen sind die Zeilen:

    Set tv = TreeView1.Object

    damit verknüpfst Du das Treview Objekt mit dem Control, und:

    tv.Nodes.Add objNode, tvwChild, AuflistungOrdnerZwei.Name, AuflistungOrdnerZwei.Name

    damit hängst Du die Childs (Subnode) in die Parent Node ein.

    Das Control heist bei mir TreeView1, das musst Du noch an Deinen Namen anpassen.

    Grüße

    Roland



    • Bearbeitet Roland Franz Donnerstag, 10. Dezember 2015 21:15 Tippfehler beseitigt
    • Als Antwort markiert MCDPone Freitag, 11. Dezember 2015 11:46
    • Tag als Antwort aufgehoben MCDPone Freitag, 11. Dezember 2015 13:23
    • Als Antwort markiert MCDPone Freitag, 11. Dezember 2015 13:23
    Donnerstag, 10. Dezember 2015 21:10

Alle Antworten

  • Hallo Michael,

    habe Deinen Code mal etwas angepasst:

    Dim objNode As MSComctlLib.node
    Dim objChild As MSComctlLib.node
    
    Dim objOutl As Outlook.Application
    Dim oNameSpace As Outlook.NameSpace
    Dim AuflistungOrdnerEins As Outlook.MAPIFolder
    Dim AuflistungOrdnerZwei As Outlook.MAPIFolder
    Dim Ordner As Outlook.MAPIFolder
    Dim OrdnerListe As Outlook.Folders
    
    Dim tv As TreeView
    
    Set objOutl = New Outlook.Application
    Set oNameSpace = objOutl.GetNamespace("MAPI")
    Set OrdnerListe = oNameSpace.Folders
    For Each AuflistungOrdnerEins In OrdnerListe
        Set tv = TreeView1.Object
        Set objNode = tv.Nodes.Add(, , AuflistungOrdnerEins.Name, AuflistungOrdnerEins.Name)
    
        For Each AuflistungOrdnerZwei In AuflistungOrdnerEins.Folders
            tv.Nodes.Add objNode, tvwChild, AuflistungOrdnerZwei.Name, AuflistungOrdnerZwei.Name
        Next AuflistungOrdnerZwei
    Next AuflistungOrdnerEins
    Set objOutl = Nothing
    Set oNameSpace = Nothing
    Set OrdnerListe = Nothing

    Die entscheidenden Änderungen sind die Zeilen:

    Set tv = TreeView1.Object

    damit verknüpfst Du das Treview Objekt mit dem Control, und:

    tv.Nodes.Add objNode, tvwChild, AuflistungOrdnerZwei.Name, AuflistungOrdnerZwei.Name

    damit hängst Du die Childs (Subnode) in die Parent Node ein.

    Das Control heist bei mir TreeView1, das musst Du noch an Deinen Namen anpassen.

    Grüße

    Roland



    • Bearbeitet Roland Franz Donnerstag, 10. Dezember 2015 21:15 Tippfehler beseitigt
    • Als Antwort markiert MCDPone Freitag, 11. Dezember 2015 11:46
    • Tag als Antwort aufgehoben MCDPone Freitag, 11. Dezember 2015 13:23
    • Als Antwort markiert MCDPone Freitag, 11. Dezember 2015 13:23
    Donnerstag, 10. Dezember 2015 21:10
  • DANKE du hast mir sehr geholfen

    ich hänge es noch mal im ganzen dran wie es bei mir geht

    Option Compare Database
    Option Explicit
    Dim objTreeview As MSComctlLib.TreeView
    
    Private Sub Form_Load()
        Set objTreeview = Me.ctlTreeview.Object
        Call TreeviewFuellen
    End Sub
    
    Private Sub TreeviewFuellen()
    
    Dim objNode As MSComctlLib.Node
    Dim objChild As MSComctlLib.Node
    
    Dim objOutl As Object
    Dim oNameSpace As Object
    Dim AuflistungOrdnerEins As Object
    Dim AuflistungOrdnerZwei As Object
    Dim Ordner As Object
    Dim OrdnerListe As Object
    
    Dim tv As TreeView
    
    Dim i As Integer
    i = 0
    Set objOutl = CreateObject("Outlook.Application")
    Set oNameSpace = objOutl.GetNamespace("MAPI")
    
    Set OrdnerListe = oNameSpace.Folders
    Set tv = objTreeview
    For Each AuflistungOrdnerEins In OrdnerListe
        Set objNode = tv.Nodes.Add(, , AuflistungOrdnerEins.Name, AuflistungOrdnerEins.Name)
        For Each AuflistungOrdnerZwei In AuflistungOrdnerEins.Folders
            i = i + 1
            tv.Nodes.Add objNode, tvwChild, AuflistungOrdnerZwei.Name & i, AuflistungOrdnerZwei.Name
        Next AuflistungOrdnerZwei
    Next AuflistungOrdnerEins
    Set objOutl = Nothing
    Set oNameSpace = Nothing
    Set OrdnerListe = Nothing
    End Sub

    Freitag, 11. Dezember 2015 11:46