如果您大量使用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培训的来源。

本技巧(12273)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

链接:/ excel-Creating_Individual_Workbooks [创建单个工作簿]。