有没有办法将许多不同的文件夹放入树状视图

时间:2019-03-26 13:16:09

标签: excel vba ms-access treeview

我是vba的新手,我想用这种格式的excel用15000个不同的文件夹填充一个巨大的“ Microsoft Treeview控件,版本6.0”:

/folderOne
/folderOne/subfolderOne
/folderOne/subfolderTwo
/folderTwo/subfolderOne

我使用过Pradeep Kumar's solution,但是如果我尝试使行数过多(可以容纳1000行,但不能容纳2000行),则会导致excel崩溃,如下所示:

Sub Button1_Click()
    LoadTreeView1 TreeView1, 1, 1000
End Sub


Private Sub LoadTreeView1(TV As TreeView, min As Integer, max As Integer)
    Dim i As Integer, RootNode As Node
    TV.Nodes.Clear
    Set RootNode = TV.Nodes.Add(, , "ROOT", "ROOT")
    RootNode.Expanded = True
    For i = min To max
        AddNode TV, RootNode, Cells(i, 1)
    Next
End Sub
Private Sub AddNode(TV As TreeView, RootNode As Node, Path As String)
    Dim ParentNode As Node, NodeKey As String
    Dim PathNodes() As String

    On Error GoTo ErrH
    PathNodes = Split(Path, "/")
    NodeKey = RootNode.Key
    For i = 1 To UBound(PathNodes)
        Set ParentNode = TV.Nodes(NodeKey)
        NodeKey = NodeKey & "/" & PathNodes(i)
        TV.Nodes.Add ParentNode, tvwChild, NodeKey, PathNodes(i)
        ParentNode.Expanded = True
    Next

    Exit Sub
ErrH:
    If Err.Number = 35601 Then
        Set ParentNode = RootNode
        Resume
    End If
    Resume Next
End Sub

我的树视图在excel上看起来不错,类似于下面的视图,但是我的问题是我无法在其中放入足够的数据。

enter image description here

我已经将列表导出到访问中,但是过程有所不同,我有点迷茫,因为正如我所说,我是vba的新手。

谢谢您的帮助

1 个答案:

答案 0 :(得分:1)

使用树形视图控件的主要策略是按需上传扩展行的数据。

  • 首先,您只加载高级树视图元素(clienti列表)
  • 用户单击节点后,称为用子元素填充相应节点的方法

想法是,没有人会滚动浏览树视图中的所有元素列表。

如果您是VBA的新手,这些细节可能会很难,所以使用链接列表可能会更好。例如

  • list1:包含客户端列表
  • list2:包含日期
  • 在选择list1中的元素之后,将动态更改list2记录源,以提供仅与list1对应的唯一元素的列表。

此解决方案超出了树视图控制的内存限制,适用于对象的分类法明确的情况。