You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:55:26