在文章如何用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参数的值即可。
盘符不存在的时候,应该是会报错的。