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个工作表,可直接用于后续数据导入
可选适配方案
如果你的使用场景中存在工作表被拖动调整顺序的可能,可以选择按工作表索引筛选的方式,将两处判断逻辑替换为索引判断即可:
- 循环内的判断条件替换为
If SH.Index >= 2 And SH.Index <=7 Then - 删除工作表的代码替换为
Output.Worksheets(1).Delete
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

