电脑的文件夹,家谱(生孩的关系),都是树形结构.以何种方式在EXCEL表达这种关系,以便于维护和查询呢,这就是我们所要讨论话题.我做了一个附件,有两个代码,初步满足了基本的要求,但由于第一次尝试考虑这个问题,必然存在众多的考虑不周不之处,所以拿出来晒晒.发挥大家的家聪明才智以便更加完善.谢谢 一、树形结构的存储格式 运行代码一可以将当前路径文件夹内的文件以树形结构的方式保存到EXCEL工作表中. Public arr1, y% Sub peng() ReDim arr1(1 To 65536, 1 To 5) y = 0 Call xi(ActiveWorkbook.Path, 0) Cells(2, 1).Resize(y, 5) = arr1 End Sub 'a查询文件条件设置 'pt路径设置 Sub xi(pt, ByVal f) On Error GoTo ren Dim x%, i%, z% ReDim arr(1 To 100) dirs = Dir(pt & "\", vbDirectory) Do While dirs <> "" If dirs <> "." And dirs <> ".." Then x = x + 1 If x > UBound(arr) Then ReDim Preserve arr(1 To UBound(arr) + 100) arr(x) = pt & "\" & dirs End If dirs = Dir Loop For i = 1 To UBound(arr) If arr(i) = "" Then Exit Sub y = y + 1 arr1(y, 1) = arr(i) arr1(y, 2) = y '自已ID arr1(y, 3) = f '父ID If i = 1 And f > 0 Then arr1(f, 5) = y '长子 If z > 0 Then arr1(z, 4) = y '弟 z = y Call xi(arr(i), y) Next i ren: End Sub Sub 显示() UserForm1.Show (0) End Sub
二、以直观的方式显示出来。 Public nodX As Node, arr Private Sub UserForm_Initialize() TreeView1.LineStyle = 1 TreeView1.Nodes.Clear arr = Cells(2, 1).Resize([a65536].End(xlUp).Row - 1, 5) Call peng(1) End Sub Sub peng(x) On Error GoTo ren If arr(x, 3) = 0 Then Set nodX = TreeView1.Nodes.Add(, , arr(x, 2) & "p", arr(x, 1)) Else Set nodX = TreeView1.Nodes.Add(arr(x, 3) & "p", tvwChild, arr(x, 2) & "p", arr(x, 1)) End If If arr(x, 4) > 0 Then Call peng(arr(x, 4)) If arr(x, 5) > 0 Then Call peng(arr(x, 5)) ren: End Sub
jLLK7AYo.rar
(40.56 KB, 下载次数: 4095)
[此贴子已经被作者于2008-5-30 11:38:15编辑过] |