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

Excel VBA 如何复制指定工作表到新工作簿并排除Sheet1

VBA仅导出指定工作表(排除Sheet1)修改方案

完整修改后代码

Sub Button1_Click()

Dim Output As Workbook
Dim Current As String
Dim FileName As String


Set Output = ThisWorkbook
Current = ThisWorkbook.FullName

Application.DisplayAlerts = False

Dim SH As Worksheet
For Each SH In Output.Worksheets
    ' 仅处理非Sheet1的工作表,跳过输入页
    If SH.Name <> "Sheet1" Then
        SH.UsedRange.Copy
        SH.UsedRange.PasteSpecial xlPasteValuesAndNumberFormats, _
            Operation:=xlNone, SkipBlanks:=True, Transpose:=False
    End If
Next

' 导出前删除不需要的Sheet1
Output.Worksheets("Sheet1").Delete
    
FileName = ThisWorkbook.Path & "\" & "Generic name.xlsx" '可自行修改导出文件名
Output.SaveAs FileName, XlFileFormat.xlOpenXMLWorkbook
Workbooks.Open Current
Output.Close
Application.DisplayAlerts = True

End Sub

改动说明

  • 新增工作表名称判断逻辑:遍历工作表时跳过名称为Sheet1的输入页,仅对Sheet2~Sheet7执行公式转数值、保留数字格式的操作,不会修改输入页的原始配置
  • 新增多余工作表删除步骤:所有工作表处理完成后直接删除Sheet1,保证导出的新工作簿仅包含业务需要的6个工作表,可直接用于后续数据导入

可选适配方案

如果你的使用场景中存在工作表被拖动调整顺序的可能,可以选择按工作表索引筛选的方式,将两处判断逻辑替换为索引判断即可:

  1. 循环内的判断条件替换为 If SH.Index >= 2 And SH.Index <=7 Then
  2. 删除工作表的代码替换为 Output.Worksheets(1).Delete

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:05