可以使用Workbooks对象或者Workbook对象的Close方法关闭工作簿。Workbooks对象的Close方法关闭所有打开着的工作簿,而Workbook对象的Close方法则关闭一个工作簿。
其语法分别为: Workbooks对象.close 关闭所有工作簿。如果有些工作簿发现修改,则会弹出是否保存对该工作簿所作的修改的提示框。
Workbook对象.close(SaveChanges,Filename,RouteWorkbook) 关闭某个工作簿。其中:
注意,上述操作仅对同一窗口中打开的工作簿有效。
示例代码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
本文为原创文章,转载请注明出处。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。 |
|