在文章如何用vba创建文件夹 中介绍了两种创建文件夹的方法。
但是都只能创建一级路径文件夹,形如“c:\1\2,c:\asdf\asdfa\asdfasd”之类的多级路径文件夹没有办法创建。
什么叫多级文件夹目录呢?
比如我们要用VBA在D盘创建一个文件夹名字叫水星,可以用MkDir 语句,代码如下:
Sub 创建单个文件夹()
MkDir "D:\水星"
End Sub
如果我们想要创建多个文件夹,这多个文件夹互为父子关系,也就是下一级是上一级的子文件夹。
比如要在D盘创建一个文件夹名字叫水星,然后在水星文件夹内再创建一个文件夹名字为VBA代码大全,然后再在VBA代码大全文件夹下创建一个文件夹名字叫文件夹专题,这就叫多级文件夹目录。
也就是要根据 D:\水星\VBA代码大全\文件夹专题 这样形式的路径创建多个文件夹。
这时候也可以用MkDir 语句,代码如下:
Sub 创建单个文件夹()
MkDir "D:\水星"
MkDir "D:\水星\VBA代码大全"
MkDir "D:\水星\VBA代码大全\文件夹专题"
End Sub
很显然,上面的代码不够灵活,如果要创建5级或者更多层级的文件夹,代码就又要手动修改多次。
这里给出一个自定义函数,可以解决任意多级目录的快速创建,代码如下:
Function CreateMultiLevelFolder(ByVal sPath As String)
'QQ:1722187970,微信:xycgenius,公众号:水星excel
Dim arr, sPathTemp
arr = Split(sPath, "\")
For i = 0 To UBound(arr) - 1
sPathTemp = arr(i) & "\" & arr(i + 1)
If Dir(sPathTemp, vbDirectory) = "" Then
MkDir sPathTemp
End If
arr(i + 1) = sPathTemp
Next i
End Function
然后将要创建的多级目录的路径传递给该函数即可。
Sub 创建多级文件夹()
sPath = "D:\水星\VBA代码大全\文件夹专题"
CreateMultiLevelFolder (sPath)
End Sub
以后要创建任意的层级文件夹时,只需修改sPath参数的值即可。


盘符不存在的时候,应该是会报错的。