将当前工作簿中的所有工作表复制到新工作簿,但第一张工作表除外
Posted
技术标签:
【中文标题】将当前工作簿中的所有工作表复制到新工作簿,但第一张工作表除外【英文标题】:Copy all sheets from current workbook to new workbook except the first sheet 【发布时间】:2020-05-14 12:54:01 【问题描述】:我有一个基于宏的工作簿,我在其中运行多个进程,所有结果都存储在同一个 XLSM 工作簿中。我需要将所有输出工作表,即除了工作表(1)之外的所有工作表存储到一个新工作簿并将其保存为 xlsx(无宏文件)
我编写了一个非常简单的代码来复制特定工作表并将其重命名为 xlsx。但是,我需要复制除第一个以外的所有工作表并将其保存为无宏工作簿(以便输出文件中不存在 VBA 代码)
Sub copy()
ThisWorkbook.Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs "C:\Output.xlsx", FileFormat:=51
End Sub
【问题讨论】:
未测试,但我认为复制文件本身,打开它并删除第一个工作表会更容易。 想象 4 张 (1, 2, 3, 4):您想要 2 在文件 2、3 在文件 3 和 4 在文件 4,还是想要一个文件有 2、3、4?你说的第一张纸是什么意思?标签栏第一个位置的工作表Sheets(1)
或名为Sheets("Sheet1")
的工作表请注意,它们可以是不同的工作表。
【参考方案1】:
这会将所有工作表从第二个工作表开始到最后,并将它们复制到一个新的工作簿中,然后最终删除 Excel 自动用作第一个工作表的“Sheet1”工作表。就个人而言,我认为复制当前工作簿然后删除第一张工作表可能要容易得多。
Sub copy()
Dim NewWkb As Workbook
Dim xWkb As Workbook
Dim x As Integer
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
Set xWkb = ThisWorkbook
Set NewWkb = Workbooks.Add
For x = 2 To xWkb.Worksheets.Count
xWkb.Worksheets(x).copy after:=NewWkb.Worksheets(NewWkb.Worksheets.Count)
Next x
NewWkb.Worksheets("Sheet1").Delete
'Plenty of different ways to save a file, here's one way for a Mac
NewWkb.SaveAs Filename:="C:\Users\Folder\newfile", FileFormat:= 51
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
【讨论】:
已编辑。现在应该很好,除非我错过了其他东西 完美,正是我想要的。谢谢!以上是关于将当前工作簿中的所有工作表复制到新工作簿,但第一张工作表除外的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python(和 DataNitro)将单元格从一个 Excel 工作簿中的特定工作表复制到另一个 Excel 工作簿中的特定工作表