我在 A 列中有一个文件夹位置列表,用于定义我尝试创建的目录层次结构(例如“C:\topFolder\nextFolder\lastFolder\)。代码运行时没有错误,但没有创建任何文件夹。我在这里做错了什么?
Sub newDestination()
Dim Path As Variant
Dim folderLevel As Variant
For Each Path In Sheet11.Range("A:A")
For Each folderLevel In Split(Path.Value, "\")
folderLevel = folderLevel & "\"
If Len(Dir(folderLevel, vbDirectory)) = 0 Then
MkDir folderLevel
End If
Next folderLevel
Next Path
End Sub
最佳答案
您正在创建孤立文件夹。 mkdir "abc\"将在工作簿目录中创建一个名为 abc 的文件夹。如果未保存工作簿,则会在 MyDocuments 中创建此文件夹(最有可能,具体取决于 Excel 的配置)。
您需要传递完全限定的路径才能在所需位置创建文件夹,例如“C:\Temp\abc\”
在您的代码中,问题在于您如何运行 for 循环并传递文件夹名称。
您需要这样做:
Sub test()
Dim strPath As String
Dim lCtr As Long
strPath = "C:\Temp\Parent\Child\ChildsChild"
arrpath = Split(strPath, "\")
strPath = arrpath(LBound(arrpath)) & "\"
For lCtr = LBound(arrpath) + 1 To UBound(arrpath)
strPath = strPath & arrpath(lCtr) & "\"
If Dir(strPath, vbDirectory) = "" Then
MkDir strPath
End If
Next
End Sub
关于vba - EXCEL VBA - 创建目录和文件夹(如果尚不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42116735/