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

如何修改VBA代码,为批量生成的工作簿添加指定源工作表?

问题解决与代码修改

你的尝试语句出错的原因有两个:一是没有明确指定Sheets("Time")属于源工作簿(当前运行代码的工作簿),二是引用新工作簿的方式错误(Workbooks.newBook是错误写法,应该直接用定义好的newBook对象),而且Sheets.Count如果不指定工作簿,会默认指向当前激活的工作簿,容易引发错误。

以下是修改后的完整代码,实现筛选唯一值生成对应工作簿,并把源工作簿的「Bonus」和「Time」工作表完整复制到新工作簿中:

Sub filter()
Application.ScreenUpdating = False
Dim x As Range
Dim rng As Range
Dim last As Long
Dim sht As String
Dim newBook As Excel.Workbook
Dim Workbk As Excel.Workbook

sht = "kalkulátor"

Set Workbk = ThisWorkbook

last = Workbk.Sheets(sht).Cells(Rows.Count, "b").End(xlUp).Row

With Workbk.Sheets(sht)
    Set rng = .Range("A1:y" & last)
End With

' 提取B列唯一值到AA列
Workbk.Sheets(sht).Range("B1:B" & last).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Workbk.Sheets(sht).Range("AA1"), Unique:=True

For Each x In Workbk.Sheets(sht).Range([AA2], Workbk.Sheets(sht).Cells(Rows.Count, "AA").End(xlUp))

    With rng
        .AutoFilter
        .AutoFilter Field:=2, Criteria1:=x.Value
        .SpecialCells(xlCellTypeVisible).Copy
    End With

    ' 创建新工作簿(仅含1个工作表)
    Set newBook = Workbooks.Add(xlWBATWorksheet)
    
    ' 粘贴筛选后的数据到新工作表并命名
    newBook.Sheets(1).Name = x.Value
    newBook.Sheets(x.Value).Paste
    
    ' 复制源工作簿的Time工作表到新工作簿末尾
    Workbk.Sheets("Time").Copy After:=newBook.Sheets(newBook.Sheets.Count)
    ' 复制源工作簿的Bonus工作表到新工作簿末尾
    Workbk.Sheets("Bonus").Copy After:=newBook.Sheets(newBook.Sheets.Count)

    ' 保存并关闭新工作簿
    newBook.SaveAs x.Value & ".xlsx"
    newBook.Close SaveChanges:=False

Next x

' 关闭筛选
Workbk.Sheets(sht).AutoFilterMode = False

With Application
    .CutCopyMode = False
    .ScreenUpdating = True
End With

End Sub

关键修改点说明:

  • 明确指定所有工作表的所属工作簿:比如Workbk.Sheets("Time")确保是从源工作簿复制,newBook.Sheets(newBook.Sheets.Count)明确指向新工作簿的最后一个工作表位置。
  • 调整了新工作簿工作表命名的逻辑:原代码会新增一个工作表,现在直接修改初始的那个工作表名称,避免多余工作表。
  • 把复制「Bonus」和「Time」工作表的代码放在新工作簿创建后、保存前,确保这两个表被加入新工作簿。

内容的提问来源于stack exchange,提问作者Márta Ricsóvári

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:06:24