VBA中级班课时3小结

本课内容:工作簿和工作表对象

主讲:rover18

学习时间:2010年11月

       本节课将学习工作簿对象Workbooks、Workbook与工作表对象Worksheets、Worksheet。在我们了解了VBA的四大要素——对象、属性、方法和事件后,会发现VBA的程序是对对象的一系列操作与控制:如果将对象看作一个名词,那么属性是描述该名词的形容词,方法是为名词赋予动作的动词,事件是某一动作后引发的变动。一切都围绕着对象展开。那么在VBA中有哪些对象?对象之间的关系如何?每个对象有哪些属性、方法与事件?这些对象的关系结构我们称之为对象模型。

对象模型:               EXCEL中所有集合、对象的层次分布结构

集合(collection): 由一组对象组成的对象集,比如Workbooks是当前所有打开的Workbook对象的集合,Worksheets是指定的或活动工作簿中所有Worksheet对象的集合。


注:对象模型树型结构图在2003版的帮助中可以查到,但在2007版和2010版帮助中,微软取消了结构图,增加了集合与对象的成员构成。

一、工作簿

(一)、工作簿表示方法

1、 索引号表示法Workbooks(Index)

按工作簿打开的次序为其编号,并按指定的号码引用工作簿:Workbooks(1)

2、 名称表示法Workbooks(“工作表名”)

Workbooks(“工作表名.xls”) ‘已保存过的工作表

Workbooks(“工作表名”) ‘未保存的工作表


注:需要注意的是,已保存的工作簿也可以不加后缀名引用,但如果系统设置里打开了“已知文件类型的扩展名“就会出错。所以保险起见最好还是写上扩展名。

3、 两种表示方法的限制条件

        经测试发现,无论是索引号引用,还是文件名引用,只适用于工程资源管理器中显示的工作簿,当通过Excel快捷键 打开的未保存工作簿,并不在一个工程资源管理器中,所以不适用,会出现“下标越界”的错误提示。

(二)、新建、打开、激活、保存、关闭工作簿

1、 新建工作簿Workbooks.Add方法

Workbooks.Add(Template)

参数Template可选,确定如何创建新工作簿。如果省略此参数,将创建包含3个空白工作表的新工作簿。

Template 值 说明:

参数

说明

xlWBATChart -4109 新建一个名为Chart只有一个图表的工作簿
xlWBATWorksheet -4167 新建一个名为Sheet1只有一个工作表的工作簿


  Application.SheetsInNewWorkbook属性设置

       在Excel中,可以通过工具中的选项对新建工作簿的默认工作表数进行设置,它对应的VBA代码是SheetsInNewWorkbook属性。改变新建工作簿的工作表数目的代码是:

Application.SheetsInNewWorkbook = 1‘新建的工作簿中只有1个工作表


注:这个设置改变了选项中的默认工作表数,所以最后要记得还原。

2、 打开工作簿Workbooks.open方法

Workbooks.Open(FileName, Password, WriteResPassword)

参数FileName必选,Password和 WriteResPassword可选。

参数 数据类型 说明
FileName Variant 要打开的工作簿的文件名。可包含文件路径
Password Variant 一个字符串,包含打开受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。
WriteResPassword Variant 一个字符串,包含写入受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。

示例:

Workbooks.Open("C:\Desktop\练习题.xls")

Open方法还有许多其它参数,列出的是常用参数。

3、 激活工作簿Workbook.Activate方法

使用Workbook对象的Activate方法可以使已打开的工作簿成为当前活动工作簿。示例:

Workbooks("练习题.xls").Activate

4、 保存工作簿


保存对指定工作簿所做的更改: Workbook.Save方法

Workbooks(“练习题.xls”).Save

AciveWorkbook.Save


不保存对指定工作簿所做的更改: Workbook.Saved属性

将工作簿的 Saved 属性设置为 True,表示工作簿从上次保存至今未发生过更改,可在不保存工作簿所做的修改的情况下关闭工作簿。

Workbooks(“练习题.xls”).Saved = True

首次保存工作簿时,用 Workbook.SaveAs 方法

Workbook.SaveAs(FileName, FileFormat, Password, WriteResPassword,)

参数Filename必选,其它参数可选。

名称 数据类型 说明
Filename Variant 一个表示要保存文件的文件名的字符串。可包含完整路径,如果不指定路径,文件将保存到当前文件夹中。
FileFormat Variant 保存文件时使用的文件格式。对于现有文件,默认采用上一次指定的文件格式;对于新文件,默认采用当前所用 Exce版本的格式。
Password Variant 它是一个区分大小写的字符串(最长不超过 15 个字符),用于指定文件的保护密码。


   注:文件名要写出后缀名,否则默认采用当前版本的格式,如果使用2007以上版本,可使用*.xls确保保存为2003版文件。

Activeworkbook.SaveAs Filename:= "C:\作业题.xls" ‘对新建文件保存

workbooks("练习题.xlsx").SaveAs filename:="C:\作业题.xls" ‘对已存在文件另存


注:对已存在文件采用向下兼容另存为,即如果原文件为2007以上版本,可保存为2003版本,但反过来,2003版本文件无法通过“SaveAs“方法另存为2007以上版本文件。

5、 关闭工作簿Workbook.Close方法

Workbook.Close(SaveChanges, Filename)

所有参数均为可选

名称 数据类型 说明
SaveChanges Variant 如果工作簿中没有改动,则忽略此参数。如果工作簿中有改动,此参数为 True,则保存对工作簿所做的更改。如果工作簿尚未命名,则使用 FileName参数。如果省略 Filename参数,则要求用户提供文件名。
Filename Variant 以此文件名保存所做的更改。

     示例:

activeworkbook.Close savechanges:=true,filename:="C:\习题.xls"      ‘保存对新建工作簿的修改并关闭

Workbooks(“习题.xls“).close false ‘不保存修改并关闭,可省略Savechanges

(三)、其它常用属性

1、 Workbooks.Name属性(名称)

返回一个 String 值,它代表对象的名称。通过Name属性我们可以对工作簿进行重命名。

2、 Workbooks.path属性(保存路径)

返回一个 String 值,它代表应用程序的完整路径,不包括末尾的分隔符和文件名。

3、 Workbooks.fullname属性(完整路径)

返回对象的名称(以字符串表示),包括其磁盘路径。String 型。它是工作簿的Path属性与Name属性的完整结果。

FullName=Path &“\”& Name

4、 Workbook.IsAddin 属性

如果指定工作簿作为加载宏运行,则该属性值为 True。Boolean 类型。如果将该属性设置为 True,则指定工作簿将具有下列特征:


如果打开该工作簿时发生了更改,将不提示保存该工作簿。
工作簿窗口不可见。
该工作簿中的任何宏都不在“宏”对话框中显示(指向“工具”菜单中的“宏”项,并单击“宏”命令可显示该对话框)。
尽管该工作簿中的宏在“宏”对话框中不可见,仍然可以通过“宏”对话框运行该工作簿中的宏。另外,宏名无须使用工作簿名称进行标识。
在打开工作簿时按住 Shift 键不起作用。

二、工作表

(一)、 Sheets集合与Worksheets集合的区别

Sheets集合                      代表当前工作簿中的所有工作表,包括图表工作表Chart、工作表Worksheet以及宏表。

Worksheets集合            仅代表当前工作簿中的所有工作表Worksheet。

Charts集合                      指定的或活动工作簿中所有图表工作表Chart的集合

(二)、工作表表示方法

1、 索引号表示法Worksheets/Sheets(Index)

该工作表在工作簿中的位置(索引号)。索引号自工作表标签最左边向右依次计数,第一个工作表通常用Worksheets(1)表示,最后一个工作表通常用Worksheets(WorkSheets.count)表示。如果要引用工作簿中包含图表与工作表在内的所有工作表,要使用Sheets对象集合。

2、 表名表示法Worksheets/Sheets (“工作表名”)


注:工作表名使用字符串形式,如Worksheets(“Sheet1”)

3、 代码名表示法Worksheet.codename属性

除以上两种常用表示工作表方式外,还有一种不常用,但很实用的方法:Codename属性。

Codename是在创建工作表时自动分配给该工作表的名称,大家可以在工程资源管理器中看到Sheet1(Sheet1),括号里是Name属性,括号外的是CodeName属性。它可以在属性窗口第一行(名称)项进行修改。无论是对工作表排序,还是重命名工作表,其CodeName属性都不会改变(除非删除该工作表,或者是在VBE窗口中对(名称)项重命名)。

Sheet3.Name ‘返回Sheet3表的表名

tt

请看上图,绿色区域是Name属性,是工作表名;黄色区域是CodeName属性。注意看立即窗口中的结果,3种方式得到3个不同结果。

(三)、新建、删除、复制、移动、选择工作表

1、 新建工作表Worksheets.Add方法

新建工作表、图表或宏表。新建的工作表将成为活动工作表。Worksheets.Add(Before, After, Count, Type),参数均为可选

名称 数据类型 说明
Before Variant 指定工作表的对象,新建的工作表将置于此工作表之前
After Variant 指定工作表的对象,新建的工作表将置于此工作表之后
Count Variant 要添加的工作表数。默认值为 1
Type Variant 指定工作表类型,可以为下列 XlSheetType常量之一:xlWorksheet、xlChart、xlExcel4MacroSheet 或 xlExcel4IntlMacroSheet。如果基于现有模板插入工作表,则指定该模板的路径。默认值为 xlWorksheet


注:新建工作表默认插入在活动工作表前。
注:可在Add方法后跟Name属性为新建工作表命名

worksheets.Add.name="excelhome" ‘新建同时为工作表命名

2、 删除工作表Worksheets.delete方法

3、 复制工作表Worksheets.copy方法

Microsoft Excel将工作表复制到工作簿的另一位置并自动为其命名为:原表名(2)。Copy方法带有2个可选的参数,即参数Before和参数After,在使用时两个参数只参选一。

名称 数据类型 说明
Before Variant 将要在其之前放置所复制工作表的工作表。如果指定了 After,则不能指定 Before。
After Variant 将要在其之后放置所复制工作表的工作表。如果指定了 Before,则不能指定 After。


     注:如果既不指定 Before 也不指定 After,则 Microsoft Exce将新建一个工作簿,其中包含复制的工作表。

Worksheets("sheet2").Copy After:=Worksheets(sheets.count)‘复制Sheet2表到最后

4、 移动工作表Worksheets.Move方法

Move方法与Copy方法的参数相同,作用也一样,用法可参照Copy方法。

5、 激活、选择工作表


激活工作表Worksheet.Activate方法

Worksheets("sheet2").Activate ‘ 激活当前工作簿中的工作表sheet2


选择工作表Worksheet.Select方法

Worksheets("sheet2").Select ‘ 选择当前工作簿中的工作表sheet2


Active与Select方法区别

‘以下示例同时选择工作簿中的工作表sheet2、sheet3和sheet5

‘方法1:

Worksheets(Array("sheet2", "sheet3","sheet5")).Select ‘用Array参数

‘方法2

Worksheets(“sheet2”).Select

Worksheets(“sheet3”).Select Replace:=False ‘用Replace参数

Worksheets(“sheet5”).Select False ‘可以省略Replace

当工作表隐藏后,Select方法将会出现错误,而使用Activate则会正常运行;Activate方法只能激活一个工作表,而Select方法可以同时选择多个工作表。


注:如果Replace值为True,则此语句前选中的工作表将被取消选中。

三、 Application.DisplayAlerts属性

禁止显示警告和消息框,默认值为 True。将此属性设置为 False 可在宏运行时禁止显示提示和警告消息;当出现需要用户应答的消息时,Microsoft Exce将选择默认应答。

1、 自动覆盖保存现存工作簿

如果使用工作簿的 SaveAs 方法覆盖现有文件,则“确认另存为”对话框具有的默认响应为“否”;如果将 DisplayAlerts 属性设置为 False,则 Exce选择的响应为“是”。如果选择的响应为“是”,则将覆盖现有文件。

2、 不保存修改直接关闭工作簿

如果使用工作簿的Close方法关闭现有文件,若修改文件后未保存,且DisplayAlerts 属性设置为 False,则“确认保存关闭“对话框的默认响应为”否“,即不保存对工作簿所做的更改就关闭。

示例:

Sub test()

Application.DisplayAlerts = False

Cells(3, 2) = "It's a test"

Workbooks("练习题.xls").Saveas filename:=”练习题.xls” ‘自动覆盖文件保存

Cells(3, 2).Clear

Workbooks("练习题.xls ").Close ‘不保存修改,直接关闭

Application.DisplayAlerts = True

End Sub

3、 删除工作表不跳出警告框

用Delete方法删除工作表会引起Excel跳出警告对话框

为避免这种情况,我们可使用Application.DisplayAlerts=False来屏蔽弹出的警告框,此时对话框的默认响应为”删除“。

四、小结

本节课对Excel的工作簿和工作表对象做了简单介绍,对工作簿、工作表的表示方式、建立、保存、删除、关闭等方法与属性列举了简单示例。其实Workbook对象与Worksheet对象的成员中还有很多方法、属性以及事件,未能在本课中得到介绍,而工作簿和工作表对象是又我们在工作中会常用到的对象,所以在实际应用中要多使用微软自带的VBA帮助,还有不要忘记通过录制宏来学习。

ExceHome技术论坛

Excehome免费在线培训中心

原文地址:https://www.cnblogs.com/zhangchenliang/p/2758636.html