宏通常用于对工作簿中包含的信息进行切片,切块和其他处理。当然,这假定包含该信息的工作簿实际上是打开的。如果不是,那么您的宏显然将需要包含代码以实际打开所需的工作簿。

打开工作簿确实会减慢宏的速度。访问磁盘和加载文件需要花费时间。因此,如果您的宏可以在实际尝试打开工作簿的麻烦之前检查工作簿是否已打开,则如果发现工作簿已打开,则可以大大加快宏的速度。

处理工作簿是否打开的一种非常灵活的方法是使用执行检查的函数,然后根据工作簿是否打开简单地返回TRUE或FALSE值。以下简短宏执行了此简洁任务:

Function AlreadyOpen(sFname As String) As Boolean     Dim wkb As Workbook     On Error Resume Next     Set wkb = Workbooks(sFname)

AlreadyOpen = Not wkb Is Nothing     Set wkb = Nothing End Function

要使用该功能,只需通过以下方式将要检查的工作簿的名称传递给它:

sFilename = "MyFileName.xls"

sPath = "C:\MyFolder\MySubFolder\"

If AlreadyOpen(sFilename) Then         'Do not have to open     Else         Workbooks.Open sPath & sFilename     End If

注意:

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

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

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