首页 理论教育 高级应用|Office对象模型与引用

高级应用|Office对象模型与引用

时间:2023-10-27 理论教育 版权反馈
【摘要】:在Office中,每一个可以被处理的内容都是对象。Office对象模型包含了Office下属的每一个应用程序的所有对象,给出了各个程序各种对象之间的关系。一个低一层的对象可能是上层对象的属性。又例如,在Excel中,Sheets为一个集合对象,表示指定的或者活动的工作簿中的工作表集合,而Range(区域)则是区域对象,而Selection也是当前被选中的对象。Sheets.SelectRange.SelectSelection.Copy“Select”为对象Sheets的方法,表示选定集合中的某个具体对象。清楚当前对象时,对下级对象的操作可以采用简化引用的方式。

高级应用|Office对象模型与引用

在Office中,每一个可以被处理的内容都是对象。例如,Word中的文档(Document)、段落(Paragraph)、字符(Character)等,Excel中的工作簿(Workbook)、工作表(Worksheet)、区域(Range)等都是对象。

Office对象模型包含了Office下属的每一个应用程序的所有对象,给出了各个程序各种对象之间的关系。这些应用程序不仅包括本书所讨论的Word、Excel和PowerPoint,还包括Access、Outlook、Project、Publisher和Visio等,甚至还包括了Office for Mac。

(1)对象的层次结构:在VBA中,应用程序的对象具有一定的层次结构。一般来说,顶层对象为Application,即应用程序本身。例如,Excel的顶层对象Application就是Excel本身,而Word的顶层对象Application就是Word本身。

顶层之下的第二层,即VBE工程资源管理器中的1级节点,就是打开的每一个Office文档与加载项,也就是VBA的一个工程。对Word而言为打开的各个Word文档及加载项,对Excel而言为打开的各个工作簿及加载项,对PowerPoint而言为打开的各个演示文稿及加载项。加载项是一种服务于各个文档的模块。

一个低一层的对象可能是上层对象的属性。例如,Word中的“页面设置(PageSetup)”对象就是“文档(Document)”的属性;Excel中“区域(Range)”对象就是“工作表(Worksheet)”的属性。

上一层对象对下一层对象的引用以及对象与属性之间的引用都用半角句号“.”作为分隔符

可以通过赋值来改变对象最终的属性。

每一个对象都有一组方法来处理其下属对象或属性。

例如,Word文档的Activate方法将焦点转向某个文档,文档的“页面设置(PageSetup)”为一个对象,而上、下、左、右页边距中的每一个均为PageSetup对象的一个属性。因此,将焦点转向“文档1”,并将其上、下、左、右页边距均设为1.8厘米的代码为:

代码中的第一行激活“文档1”。此时,Application的属性(子对象)“ActiveDocument”即为“文档1”。

代码中的“With [Object] … End With”结构是VBA常用的对某一对象设置多个属性的语句结构。如果没有这个结构,四行属性赋值语句都将以“ActiveDocument.PageSetup”开头。

(2)用集合(Collection)来“打包”一组对象:集合是包含多个相同对象的对象。例如,在Word中,Documents是一个集合对象,表示打开的所有文档;Characters也是一个集合对象,表示所选内容、范围或文档中的字符集合,单个字符就是字符集合Characters中的一个元素。当前在窗口中被选中的内容也是一个集合对象,即Selection。这里使用代码,给选定内容中的第一个字符设置字体参数为加粗、大小18。(www.xing528.com)

又例如,在Excel中,Sheets为一个集合对象,表示指定的或者活动的工作簿中的工作表集合,而Range(区域)则是区域对象,而Selection也是当前被选中的对象。因此,以下的代码即切换到工作表“Sheet1”,然后选中区域“B2:B6”,最后再将这五个单元格复制到剪贴板

Sheets("Sheet1").Select

Range("B2:B6").Select

Selection.Copy

“Select”为对象Sheets的方法,表示选定集合中的某个具体对象。

用直接指定名称的方法引用集合中的对象。

从上例中可以看到,如果打开多个工作簿,则每个工作簿中都可能含有一个Sheet1工作表,引用特定的工作表时只需在前面加上其容器。例如“Workbooks("工作簿1").Sheets("Sheet1")”。如果没有工作簿限定,则引用活动工作簿中的Sheet1工作表。

清楚当前对象时,对下级对象的操作可以采用简化引用的方式。例如,Sheet1为当前工作表(Worksheet)的对象时,则Sheet1下的其他对象都可直接使用。又例如,Columns(1)或Columns("A"),Rows(1)或Rows.Item(1),Range("A1:C10")等,都是当前工作表下的对象。

温馨提示

在Excel的对象模型中,没有单个单元格(Cell)这一对象,因为单个单元格,完全可以用Range(" ")(在引号中放入单元格地址)来表示。但是,在Word的对象模型中,表格(Table)下却有单元格(Cell)对象,而且Word对象模型中的Range对象是指一个文本范围。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈