分享

Excel VBA解读(87):关闭工作簿 —— Close方法

 L罗乐 2018-03-16


可以使用Workbooks对象或者Workbook对象的Close方法关闭工作簿。Workbooks对象的Close方法关闭所有打开着的工作簿,而Workbook对象的Close方法则关闭一个工作簿。

 

其语法分别为:

Workbooks对象.close

关闭所有工作簿。如果有些工作簿发现修改,则会弹出是否保存对该工作簿所作的修改的提示框。

 

Workbook对象.close(SaveChanges,Filename,RouteWorkbook)

关闭某个工作簿。其中:

  • 所有参数均为可选参数。

  • 参数SaveChanges指定是否保存对工作簿所作的修改。如果没有修改过工作簿,则忽略此参数。如果修改了工作簿,则使用此参数指定是否保存修改;如果参数值设置为True,则关闭时将保存修改,此时如果工作簿还没有被命名,则使用参数Filename指定的名称,若没有指定Filename参数,则要求用户输入文件名;如果此参数值设置为False,则关闭时将不会保存任何对工作簿的修改。

  • 参数Filename指定保存修改的工作簿名称。

 

注意,上述操作仅对同一窗口中打开的工作簿有效。

 

示例代码1:关闭所有打开的工作簿

下面的代码关闭所有打开的工作簿。

Sub CloseAllWB()

   Workbooks.Close

End Sub

对于Excel 2007及以后的版本来说,所有打开的工作簿必须处于同一个实例窗口中。

 

示例代码2:关闭指定的工作簿

下面的代码关闭工作簿test1.xlsx,并保存对该工作簿所作的修改。

Sub CloseAWorkbook()

   Workbooks('test1.xlsx').Close SaveChanges:=True

End Sub

 

下面的代码关闭工作簿test1.xlsx,并将对该工作簿的修改保存到test2.xlsx工作簿中。

Sub CloseAWorkbook1()

   Workbooks('test1.xlsx').Close SaveChanges:=True, _

                           Filename:='test2.xlsx'

End Sub

注意,此时工作簿test1.xlsx仍保持原来的内容不变。

 

示例代码3:模仿在关闭的工作簿中取值

经常有人提出,如何获取关闭的工作簿中的值?除了真正不打开工作簿来取值外,还可以换一种思路来实现。可以使用程序打开想在其中取值的工作簿,获取该工作簿中的值,然后将其关闭。由于程序运行速度很快,用户根本没有意识到我们打开过该工作簿,就好像我们没有打开该工作簿而获得了其中的值一样。

 

示例代码如下:

Sub GetValue()

   Workbooks.Open Filename:=ThisWorkbook.Path & '\test2.xlsx'

   ActiveWorkbook.Worksheets('Sheet1').Range('A1').Copy_

       ThisWorkbook.Worksheets('Sheet1').Range('A1')

   Workbooks('test1.xlsx').Close SaveChanges:=False

End Sub

 

其中,语句ThisWorkbook.Path获取代码所在工作簿的路径。

 

运行效果如下图1所示。


1


示例代码4:拆分工作簿

下面的代码将当前工作簿中的每个工作表都保存为一个工作簿,新工作簿保存在与原工作簿相同的文件夹中,其名称为工作表的名称。

Sub SplitWorkbook()

   Dim wks As Worksheet

   Dim wkb As Workbook

   Dim strNewWBName As String

   

   For Each wks In ThisWorkbook.Sheets

        strNewWBName = ThisWorkbook.Path &'\' & wks.Name & '.xlsx'

        wks.Copy

        ActiveWorkbook.Sheets(1).Name ='Sheet1'

        ActiveWorkbook.SaveAsFilename:=strNewWBName

        ActiveWorkbook.Close SaveChanges:=False

   Next wks

End Sub

 



本文为原创文章,转载请注明出处。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多