在宏中复制工作表(Microsoft Excel)
在工作簿中组织数据时,将工作表从一个工作簿复制到另一个工作簿并不少见。确实,“移动”或“复制工作表”命令(当您右键单击工作表选项卡时可见)是我经常使用的命令,我敢打赌其他人也会经常使用它。
那么,如何在宏中复制工作表呢?答案是对单个工作表或工作表组使用Copy方法。
例如,以下宏代码会将当前选定的工作表复制到新的工作簿:
ActiveSheet.Copy
而已;将工作表复制到一个新的未命名工作簿中,只需一行即可。执行该行之后,将选择新工作簿,然后可以使用类似于以下代码的方式将其保存。代码的第一行保存工作簿,第二行关闭工作簿。
ActiveWorkbook.SaveAs Filename:="MyNewFile.xlsm", _ FileFormat:=xlOpenXMLWorkbookMacroEnabled ActiveWindow.Close
如果要将特定的工作表复制到另一个工作簿,则可以通过指定要复制的工作表的名称来实现,而不是使用ActiveSheet对象:
Sheets("Sheet1").Copy
本示例将名为Sheet1的工作表从Sheets集合复制到新工作簿。然后,您可以保存新工作簿,如前所述。
当与工作表一起使用时,“复制”方法不仅限于一次复制一张纸。如果您选择了一组图纸,则仍可以使用单个命令行将所有图纸复制到新工作簿中。
这是在此宏中执行的操作:
Sub CopyWorkbook() Dim sCopyName As String sCopyName = "My New Workbook.xlsm" SelectedSheets.Copy ActiveWorkbook.SaveAs Filename:=sCopyName, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub
注意复制命令的使用。无论选择一个工作表还是五十个工作表,该宏都将起作用。没关系如果要将所有工作表从一个工作簿复制到另一个工作簿,您要做的就是在宏中进行一个单一更改,将其复制到调用Copy方法的行:
Sheets.Copy
这将复制整个Sheets集合,其中包括工作簿中的所有工作表。
应该注意的是,Copy方法不仅用于将工作表复制到新工作簿;还用于将工作表复制到新工作簿。它也可以用于复制同一工作簿中的工作表。您唯一需要做的就是指定要在当前工作簿中的哪个位置进行复制:
ActiveSheet.Copy After:=Sheets("Sheet7")
此代码行将活动工作表复制到同一工作簿中,以便它出现在名为Sheet7的工作表之后。如果更适合您的需求,则可以指定要放置副本的工作表:
ActiveSheet.Copy Before:=Sheets("Sheet7")
这导致工作表放置在Sheet7之前而不是之后。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(11856)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: