zoukankan      html  css  js  c++  java
  • 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免费在线培训中心

  • 相关阅读:
    BZOJ3105-新Nim游戏
    POJ2947-Widget Factory
    POJ2248-Addition Chains
    POJ1964-City Game
    POJ2823-Sliding Window
    关于upx壳的一点认知,以及upx壳的特征识别
    易语言人脸识别算法源码
    易语言websocket客户端纯源码(无模块)
    易语言雷电模拟器批量虚拟定位源码
    易语言修改外部任意窗口标题图标源码
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2758636.html
Copyright © 2011-2022 走看看