大家好,上节介绍过部分工作簿对象的常用方法-创建和打开,本节将继续介绍工作簿对象的激活、保存和关闭方法。
三、工作簿对象activate方法
在使用时可打开多个excel工作簿文件,但只有一个excel文件是活动状态。当需要改变excel文件的活动状态时,可以使用workbooks集合的activate方法来激活一个工作簿。
workbooks(“工作簿名称”).activate
方法较简单,这里不做演示。
四、工作簿对象save方法
保存excel工作簿,在VBA中主要是通过workbook工作簿对象的save方法和saveas方法
代码thisworkbook.save 表示保存代码所在的工作簿。
如果想将文件另存为一个新的文件,或者第一次保存一个新建的工作簿,就用saveas方法。代码模式如下:
thisworkbook.saveas filename:="文件保存的路径"
其中filename参数指文件保存的路径及文件名,如果省略路径,默认将文件保存在当前文件夹中。(注意文件名的扩展名的与原文件一致)
在使用saveas方法将工作簿另存为新文件后,将自动关闭原文件,打开新文件,如希望继续保留原文件不打开新文件,可以用savecopyas方法。
thisworkbook.savecopyas filename:=“文件保存的路径”。
示例1 保存所有工作簿
代码中定义wb变量为工作簿对象,通过for each循环语句,在所有的工作簿中循环,保存所有工作簿。
示例2 保存新建的工作簿
定义了wb变量为工作簿对象,wbname为字符串文件。wbname变量用于赋值保存文件名。将wb对象通过set语句赋值为新建的工作簿对象。
将新建的工作簿保存按wbname的名称保存(只有文件名,路径与新建文件簿位一样)
实际saveas方法有诸多参数,如下所示
Workbook对象.SaveAs(FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended,CreateBackup,AccessMode,ConflictResolution,AddToMru,TextCodepage,TextVisualLayout,Local)
SaveAs方法的参数很多,其中:
1、所有参数均为可选参数。
2、参数FileName指定要保存的工作簿的名称。可以提供保存的路径,否则将保存到当前文件夹中。
3、参数FileFormat指定工作簿保存的格式。
4、参数Password指定保存的工作簿的密码,区分大小写。
5、参数WriteResPassword指定工作簿的写保护密码。如果使用密码保存工作簿并且在打开时未提供密码,则以只读方式打开该工作簿。
6、参数CreateBackup设置为True时,创建工作簿的备份。
五、工作簿对象close方法
关闭工作簿workbook对象使用close方法,如果是workbooks集合对象的close则是关闭所有打开的工作簿对象。
Workbooks("vba.xlsm").Close 是关闭了单个工作簿vba.xlsm,而workbooks.close则是关闭所有打开的工作簿。
在关闭工作簿时,如果excel表有修改且没有保存,那么系统会在关闭前弹窗提示是否需要保存。如果不希望出现弹窗,可以通过设置close方法的参数来修改。
下面看下close方法的完整格式。
Workbook对象.close(SaveChanges,Filename,RouteWorkbook)
1、所有参数均为可选参数。
2、参数SaveChanges指定是否保存对工作簿所作的修改。如果没有修改过工作簿,则忽略此参数。如果修改了工作簿,则使用此参数指定是否保存修改;如果参数值设置为True,则关闭时将保存修改,此时如果工作簿还没有被命名,则使用参数Filename指定的名称,若没有指定Filename参数,则要求用户输入文件名;如果此参数值设置为False,则关闭时将不会保存任何对工作簿的修改。
3、参数Filename指定保存修改的工作簿名称。
示例保存关闭工作簿
下面以保存并关闭vba.xlsm文件为例。
Workbooks("vba.xlsm").Close savechanges:=True通过简单的代码,可以实现直接保存之后关闭excel文件。
并且savechages参数可以直接省略,简写成下面的形式。
下面顺便说明下thisworkbook和activeworkbook的区别。
两者实际都application对象的属性。均返回一个workbook对象。与之前介绍工作表activesheet属性类似。
thisworkbook是对程序所在的工作簿的引用。而activeworkbook则是当前活动的工作簿的引用。如果新建的工作簿,新建的工作簿为活动工作簿。
举例如下:
ThisWorkbook.Name返回示例中代码所在工作簿名称为“工作簿1.xlsm”。而ActiveWorkbook.Name返回当前代码所在的工作簿名称为“vba.xlsm”
本节主要介绍工作簿对象的常用方法,后续会介绍application对象的属性和方法,以及事件等内容等,祝大家学快乐。