excel - 有没有办法将许多不同的文件夹放入树视图中
问题描述
我是 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 的新手。
谢谢您的帮助
解决方案
使用树视图控件的主要策略是按需上传扩展行的数据。
- 首先,您只加载高级树视图元素(客户端列表)
- 用户点击节点后,调用对应节点填充子元素的方法
想法是没有人会滚动浏览树视图中的所有元素列表。
如果您是 VBA 新手,这些细节可能会很困难,因此使用链表可能会更好。例如
- list1:包含客户列表
- list2:包含日期
- 在 list1 中选择元素后,list2 记录源会动态更改,以提供与 list1 相对应的唯一且唯一元素的列表
此解决方案超出了树形视图控制的内存限制,如果您对对象有明确的分类深度,则适用。
推荐阅读
- c++ - 简单的多线程程序问题
- java - 如何使用流映射和reduce更新整数的ArrayLists的ArrayList中的元素?
- javascript - 是否在每个发生的事件上创建一个 e var?
- react-native - 带有本机反应的PayPal订阅不起作用
- java - 为什么 Zookeeper 重新上线后,curator 没有恢复?
- java - Spring集成轮询器
- react-native - 如何使用 i18next 获取存储在 AsyncStorage 中的语言环境?
- python - Python:当两个数据框在两个不同的列中共享一个公共值时,返回整行
- c++ - 无法在网络摄像头视频 OpenCV C++ 上绘制矩形
- laravel - Laravel 8 登录尝试与 Fortify 429 TOO MANY REQUESTS