Excel VBA:如何将数组名作为For-Next循环参数批量创建文件夹
解决Excel VBA创建文件夹时的错误13(类型不匹配)问题
原代码触发错误13的核心原因:你试图通过字符串拼接("foldersList" & i)来引用数组变量,但这种方式在VBA里行不通——字符串和数组属于不同数据类型,直接赋值必然引发类型不匹配。此外代码还有几处细节错误,以下是修正后的完整实现:
Sub create_DD_folders() ' 创建文件夹 Dim fso As Object Dim folderConfig As Variant Dim baseDir As String, targetDir As String, subFolder As String, fullPath As String Dim i As Integer Set fso = CreateObject("Scripting.FileSystemObject") ' 存储两组目录配置:基础路径 + 对应子文件夹列表 folderConfig = Array( _ Array("c:\Dokumenty\Work\Project\", Array("form", "folderA1", "folderAB", "folderAC")), _ Array("d:\My_disc\Projects\", Array("form", "folderB1", "folderBB", "folderYC")) _ ) ' 循环处理每组配置 For i = LBound(folderConfig) To UBound(folderConfig) baseDir = folderConfig(i)(0) ' 拼接目标主目录(abc和xyz替换为你的实际变量) targetDir = fso.BuildPath(baseDir, "abc-xyz") ' 创建主目录(如果不存在) If Not fso.FolderExists(targetDir) Then MkDir targetDir End If ' 循环创建子文件夹 For Each subFolder In folderConfig(i)(1) fullPath = fso.BuildPath(targetDir, subFolder) If Not fso.FolderExists(fullPath) Then MkDir fullPath End If Next subFolder Next i Set fso = Nothing End Sub
关键修改说明
- 用配置数组替代变量名拼接:把基础路径和对应子文件夹列表打包成二维数组,直接通过索引调用,彻底解决类型不匹配问题
- 修正路径错误:原代码中
myDir2错误复用了myBaseDir1,现在通过配置数组直接关联正确的基础路径 - 变量名修正:原代码里的
Slozka是拼写错误,改为语义清晰的循环变量subFolder - 路径拼接优化:使用
fso.BuildPath自动处理斜杠,避免手动拼接出现\\这类无效路径 - 提升可维护性:后续新增目录配置,只需在
folderConfig数组中添加一行即可,无需额外定义变量
内容的提问来源于stack exchange,提问作者Pacho
相关产品推荐
相关产品推荐

