首页 > 解决方案 > 有没有办法将许多不同的文件夹放入树视图中

问题描述

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

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

我已经使用了Pradeep Kumar 的解决方案,但是如果我尝试使用太多行(可以使用 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 上看起来不错,类似于下面的,但我的问题是我无法在其中放入足够的数据。

在此处输入图像描述

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

谢谢您的帮助

标签: excelvbams-accesstreeview

解决方案


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

  • 首先,您只加载高级树视图元素(客户端列表)
  • 用户点击节点后,调用对应节点填充子元素的方法

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

如果您是 VBA 新手,这些细节可能会很困难,因此使用链表可能会更好。例如

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

此解决方案超出了树形视图控制的内存限制,如果您对对象有明确的分类深度,则适用。


推荐阅读