vba - EXCEL VBA - 创建目录和文件夹(如果尚不存在)

标签 vba excel 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

最佳答案

您正在创建孤立文件夹。 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/

相关文章:

vba - 当特定单元格发生更改时,如何运行 Excel 宏? [新花样]

excel - 如何在多列中进行 CountIf 计算?

java - 使用 Apache POI 复制 Excel 工作表

excel - MS Excel 在单元格中显示额外的连字符

c# - 远程服务器返回错误 : (550) File unavailable(Error occured on making ftp directory)

通过 Excel/VBA 调用的 DLL 中的 C++ 函数在传递双参数时生成异常

vba - 输入超过文件VBA excel的结尾

vba - 使我的解析器向下滚动时出现问题

bash - 在 bash 中用另一个文件替换整个文件

java - Eclipse 新文件夹需要父文件夹