EXCEL VBA - 创建目录和文件夹(如果它们不在那里)

时间:2017-02-08 15:07:45

标签: excel vba excel-vba directory

我在列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

1 个答案:

答案 0 :(得分:4)

您正在创建孤儿文件夹。 mkdir" abc \"将在WorkBook的目录中创建一个名为abc的文件夹。如果未保存工作簿,则此文件夹将在MyDocuments中创建(最相似,具体取决于Excel的配置)。

您需要传递完全qalified路径才能在所需位置创建一个文件夹,例如" 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