如果您大量使用Excel,您知道您可能会从同事那里得到一些相当大的工作簿。通常,希望将工作簿分解,以使每个工作表都在其自己的工作簿中。尽管可以手动完成此操作,但是如果您有很多工作要做,则该过程很快就会变得乏味。

这种重复工作对于宏来说是很自然的。下面的宏称为BreakItUp,它基于当前工作簿中的工作表创建单个工作簿文件。因此,如果当前工作簿包含25个工作表,则运行此宏将导致创建25个单独的Excel工作簿文件。每个工作簿都有一个工作表,并且该工作簿的名称与工作表的名称相同。

Sub BreakItUp()

Dim sht As Worksheet     Dim NFName As String     Const WBPath = "C:\"



For Each sht In ActiveWorkbook.Worksheets         sht.Copy         NFName = WBPath & sht.Name & ".xls"

ActiveWorkbook.SaveAs FileName:=NFName, _             FileFormat:=xlNormal, CreateBackup:=False         ActiveWindow.Close     Next End Sub

BreakItUp宏将新工作簿存储在C:驱动器的根目录中。如果要将工作簿保存在其他位置,则只需更改创建WBPath常量的行。

您还应该知道,使该宏崩溃比较容易。例如,如果您在工作表名称中使用的字符不是“合法”

对于文件名,宏在尝试创建文件时会毫不客气地停止。当然,您可以轻松地对宏进行修改,以检查并替换这些非法字符。

宏的另一个潜在陷阱是,如果已经存在与工作表同名的文件,则该宏将停止运行。例如,假设您有一个名为MySheet1的工作表。如果磁盘上已经存在一个名为MySheet1.xls的文件,则该宏在尝试覆盖该文件时将停止。您可以通过确保保存工作簿的目录中没有文件名冲突来解决此问题。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

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