有没有办法将manydifferent文件夹放入树视图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法将manydifferent文件夹放入树视图相关的知识,希望对你有一定的参考价值。

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

/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的新手。

谢谢您的帮助

答案

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

  • 首先,你只是加载高级树视图元素(clienti list)
  • 在用户点击节点之后,调用用子元素填充相应节点的方法

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

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

  • list1:包含clienti列表
  • list2:包含日期
  • 在list1中选择元素之后,动态更改list2 recordsource,以便提供仅与list1对应的元素列表

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

以上是关于有没有办法将manydifferent文件夹放入树视图的主要内容,如果未能解决你的问题,请参考以下文章

我是不是需要将文件放入熊猫数据框中以放入镶木地板格式?

将IP地址放入bash变量。有没有更好的办法

如何将 MySQL 代码放入源代码管理中?

将 Java 应用程序放入文件管理器的上下文菜单中

有没有办法在创建项目时设置项目的默认命名空间?

如何使用 lua 读取文件夹名称并将它们放入表列表中