其实你的代码不复杂,因为你这样结构只能弄两层,不是真正意义上的树,要实现真正意义上的无限级树,你需要为每一个文件夹增加唯一ID,而用父ID指定所属。
VBA代码如下:
Option Explicit
Sub ygb()
Dim dbRoot, dbCreated
Dim i, arr, root, leaf, num, path, j
Set dbRoot = CreateObject("Scripting.Dictionary")
Set dbCreated = CreateObject("Scripting.Dictionary")
'1.扫描数据
arr = Range("a1").CurrentRegion
For i = 2 To UBound(arr)
root = arr(i, 1)
num = arr(i, 3)
d造历委室容息当官bRoot(root如) = num
Next i
'2.建立文件夹
For i = 2 To UBound(arr)
root = arr(i, 1)
l赵检止井读eaf = arr(i, 2)
n师表氢印两可量氢海额um = arr(i, 3)
'由于你那个文件夹名称是敏感词,我经常帖子被删除,所以粘贴代码的时候我改为xyz
path = "C:xyz" & root & "-" & dbRoot(root)
I回专马f Not dbCreated.Exists(path) Then
MkDir path
dbCreated(path) = True
E真农觉掌零检运成载nd If
path = path & "" & leaf
If dbRoot.Exists(leaf) Then
path = path & "-" & dbRoot(leaf)
End If
MkDir path
dbCreated(path) = True
Next i
'3.显示所有已经了文件夹
i = 2
j = 5
For Each path In dbCreated.Keys
Cells(i, j) = path
i = i + 1
Next path
End Sub
执行后的测试数据如下图:
计算机上的文件夹树如下:

追问 : 我要怎么改才能做成无限树呢?
我的第5行 AA AAA 3其实是要求C:\A-1\AA-3\AAA,包括后面第7行的AAA AAAA 3也是要求生成C:\A-1\AA-3\AAA将AAA文件夹改名为AAA-3并且在里面生成AAAA文件夹
这个name在数据上保证A列中相同的话,C列也会相同,C列相同不一定A列相同的
这个代码只有2层,能不能帮下忙谢谢
追答 : 树状代码好写,但是你所有文件夹不能重名,也就是每一个LEAF是固定位置,不能交叉,否则结果会完全混乱,代码如下: ----百度不让粘贴代码了,怎么办,说字符太多,附件上传XLS文件