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

无需逐个打开新文件,如何将工作簿工作表另存为新文件并重命名表为Product?

当然可以!完全不用逐个打开新文件折腾,咱们直接在拆分工作表的VBA代码里加几步,就能一次性把所有新文件的工作表都改成Product,全程自动完成~

修改后的完整解决方案代码

核心思路是:在把原工作表复制到新工作簿之后,立刻对新工作簿里的目标工作表重命名,再保存文件——整个过程不需要手动打开任何新文件。

Sub SplitSheetsToFilesAndRename()
    Dim ws As Worksheet
    Dim newWorkbook As Workbook
    Dim saveFolder As String
    
    ' 设置拆分文件的保存路径(改成你自己的路径,记得末尾加反斜杠)
    saveFolder = ThisWorkbook.Path & "\拆分后的产品文件\"
    
    ' 如果保存文件夹不存在,自动创建
    If Dir(saveFolder, vbDirectory) = "" Then
        MkDir saveFolder
    End If
    
    ' 遍历原工作簿的每一个工作表
    For Each ws In ThisWorkbook.Worksheets
        ' 创建一个只带空白工作表的新工作簿
        Set newWorkbook = Workbooks.Add(xlWBATWorksheet)
        
        ' 把当前工作表复制到新工作簿的第一个位置
        ws.Copy Before:=newWorkbook.Sheets(1)
        
        ' 删除新工作簿自带的空白工作表(避免冗余)
        Application.DisplayAlerts = False ' 关闭删除提示框
        newWorkbook.Sheets(2).Delete
        Application.DisplayAlerts = True
        
        ' 关键一步:直接把新工作簿里的工作表重命名为"Product"
        newWorkbook.Sheets(1).Name = "Product"
        
        ' 保存新文件(文件名用原工作表名,你也可以改成自定义名称)
        newWorkbook.SaveAs _
            Filename:=saveFolder & ws.Name & ".xlsx", _
            FileFormat:=xlOpenXMLWorkbook
        
        ' 关闭新工作簿
        newWorkbook.Close SaveChanges:=False
    Next ws
    
    MsgBox "搞定!所有工作表已拆分并重命名完成😉"
End Sub
关键细节说明
  • 为什么要删除新工作簿的空白表?因为Workbooks.Add默认会生成一个空白工作表,我们复制原工作表过去后,新工作簿会有两个表,删掉多余的那个才能保证最终文件只有Product这一个工作表。
  • 重命名步骤紧跟在复制操作后,此时新工作簿在后台处理,完全不需要你手动打开,效率拉满。
  • 保存路径可以自由修改,代码里的ThisWorkbook.Path是指原工作簿所在的文件夹,也可以改成绝对路径比如"D:\我的文档\产品文件\"。
使用方法
  1. 打开你的原始工作簿,按下Alt + F11打开VBA编辑器。
  2. 右键点击左侧的工作簿名称,选择「插入」→「模块」。
  3. 把上面的代码粘贴到模块里,调整saveFolder到你想要的路径。
  4. 点击工具栏的「运行」按钮(或者按下F5),等待宏执行完成即可。

这样生成的每个独立Excel文件里,唯一的工作表都会是Product,完美满足你导入其他程序的需求~

内容的提问来源于stack exchange,提问作者TKE-439

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:34:42