在工作簿中组织数据时,将工作表从一个工作簿复制到另一个工作簿并不少见。确实,编辑| “移动”或“复制工作表”命令是我经常使用的命令,我敢打赌其他人也会经常使用它。

那么,如何在宏中复制工作表呢?答案是对单个工作表或工作表组使用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培训的来源。

本技巧(2784)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: