使用 VBA 宏创建文件夹和子文件夹

use*_*595 3 vba microsoft-excel

我希望使用我创建的电子表格根据每列中的内容生成文件夹和子文件夹。

第一列是顶层,第二列是下一层(子文件夹),依此类推。

    A                 B                   C                   D
1   TOP FOLDER 1      Sub Folder 1.1      Sub Folder 1.2      Sub Folder 1.3
2   TOP FOLDER 2      Sub Folder 2.1      Sub Folder 2.2      Sub Folder 2.3
3   TOP FOLDER 3      Sub Folder 3.1      Sub Folder 3.2      Sub Folder 3.3
Run Code Online (Sandbox Code Playgroud)

我已经尝试过另一个程序,它创建了文件夹,但将它们全部放在一个文件夹中!我需要它与子文件夹,但我认为一个问题可能是分离文件夹,这是一个例子:

我认为将子文件夹分成它们的父文件夹可能会有问题,因为它们在同一列中......

nix*_*xda 5

这将使用 VBA 创建一个文件夹结构。短而美丽。

Sub CreateFolderStructure()
    Dim objRow as Range, objCell as Range, strFolders as String

    For Each objRow In ActiveSheet.UsedRange.Rows
        strFolders = "C:\myRootFolder"            
        For Each objCell In objRow.Cells
            strFolders = strFolders & "\" & objCell
        Next            
        Shell ("cmd /c md " & Chr(34) & strFolders & Chr(34))
    Next    
End Sub
Run Code Online (Sandbox Code Playgroud)

没有错误处理!

它能做什么

  1. 循环遍历活动 Excel 工作表的每一行
  2. 设置应在其中创建新文件夹的根文件夹。必须在每个循环中完成
  3. 循环遍历当前行中每个使用过的单元格
  4. 用反斜杠连接根文件夹和新的子文件夹。
    对该行中的每个子文件夹执行此操作,直到我们得到类似
    "C:\myRootFolder\TOP FOLDER 1\SUB FOLDER 1.1\SUB FOLDER 1.2\SUB FOLDER 1.3"
  5. 现在魔法来了。我们使用 VBA 的mkdir功能。
    相反,我们使用Shell(cmd /c md)which 可以通过一个命令创建多个文件夹。如果文件夹已经存在,它也不会产生错误。这么漂亮的命令

一些笔记

  • 避免在文件夹名称中使用这些字符: © ® " - & ' ^ ( ) @
  • 空的 Excel 单元格没有问题。MD 命令可以像C:\root\\subfolder处理两个连续的反斜杠一样处理字符串
  • 文件夹名称中的空格没有问题,因为我们用两个引号 ( chr(34))包裹了完整的结构