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

修改Excel VBA代码:按指定子文件夹保存模板文件

修改后的Excel VBA代码(保存至指定子文件夹)

关键改动说明

  • 修复原代码中rngNames的赋值错误(原代码使用.Values会导致类型不匹配)
  • 循环时读取对应行B列的子文件夹名称,动态拼接保存路径
  • 新增自动创建子文件夹的逻辑,避免因文件夹不存在导致保存失败
  • 增加空值判断,跳过无效的文件名或文件夹名称

修改后的完整代码

Public Sub SaveTemplate()
    Const strBasePath As String = "C:\My Documents\" ' 基础根路径
    Const strTemplatePath As String = "C:\My Documents\template.xls"

    Dim rngNames As Excel.Range
    Dim rng As Excel.Range
    Dim wkbTemplate As Excel.Workbook
    Dim subFolderPath As String
    Dim fullSavePath As String
    
    ' 引用File Names工作表A1:A200的单元格区域(修正原代码的Values错误)
    Set rngNames = ThisWorkbook.Worksheets("File Names").Range("A1:A200")
    
    ' 打开模板文件
    Set wkbTemplate = Application.Workbooks.Open(strTemplatePath)
    
    ' 遍历每个文件名单元格
    For Each rng In rngNames.Cells
        ' 跳过空单元格
        If Trim(rng.Value) <> "" And Trim(rng.Offset(0, 1).Value) <> "" Then
            ' 获取对应行B列的子文件夹名称,拼接成子文件夹路径
            subFolderPath = strBasePath & rng.Offset(0, 1).Value & "\"
            
            ' 如果子文件夹不存在,创建它
            If Dir(subFolderPath, vbDirectory) = "" Then
                MkDir subFolderPath
            End If
            
            ' 拼接完整保存路径(子文件夹+A列文件名)
            fullSavePath = subFolderPath & rng.Value
            
            ' 保存模板文件
            wkbTemplate.SaveAs fullSavePath
        End If
    Next rng
    
    ' 关闭模板文件,不保存更改
    wkbTemplate.Close SaveChanges:=False
End Sub

代码细节说明

  • rng.Offset(0, 1).Value:获取当前A列单元格同一行的B列值(子文件夹名称)
  • Dir(subFolderPath, vbDirectory):检查指定路径是否为已存在的文件夹
  • MkDir subFolderPath:创建不存在的子文件夹
  • 空值判断:跳过A列或B列为空的行,避免生成无效路径导致报错

内容的提问来源于stack exchange,提问作者Kreme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:20:32