WordVBA学习交流资料目录一、对象模型打开WordVBA帮助,首先看到的是“Word的对象模型”(如下所示)图表1知识点:知道Application对象(Word应该程序的总对象)、Doctuments对象(文档集对象)、Paragraphs对象(段落集)、Selection(选中区域)对象、Tables(表格)对象、Sections(节,即Word的第一节)对象、Headers(页眉)对象。二、新增功能(略)原因:我们的初衷大多是从“零”开始,最基础的我们都不知道,何来“新增”啊?但是,以后学到相关的知识时,会跳到这里,学一些新增的“对象”、“方法”、“事件”、“属性”等。三、编程概念对象是VisualBasic的结构基础,在VisualBasic中进行的所有操作几乎都与修改对象有关。MicrosoftWord的任何元素,如文档、表格、段落、书签、域等,都可用VisualBasic中的对象来表示。什么是对象和集合?对象代表一个Word元素,如文档、段落、书签或单独的字符。集合也是一个对象,该对象包含多个其他对象,通常这些对象属于相同的类型;例如,一个集合对象中可包含文档中的所有书签对象。通过使用属性和方法,可以修改单独的的对象,也可修改整个的对象集合。例如:ActiveDocument.Paragraphs(2).Range.Characters(1).Font.Color=wdColorRed在Word的VBA中,大多数对象都是通过Application来访问,但有几个可以直接访问:如activedocumnet、documents等,当然通过application对象也行,但无疑后者更简略。什么是属性?属性是对象的一种特性或该对象行为的一个方面。例如,文档属性包含其名称、内容、保存状态以及是否启用修订。若要更改一个对象的特征,可以修改其属性值。若要设置属性的值,可在对象的后面紧接一个句号、属性名称、一个等号及新的属性值。下列示例在名为“MyDoc.doc”的文档中启用修订。SubTrackChanges()Documents(Sales.doc).TrackRevisions=TrueEndSub3在本例中,Documents引用由打开的文档(注意是对打开后文档的操作)构成的集合,而“MyDoc.doc”标识集合中单独的文档。并设置该文档的TrackRevisions属性。不能设置某些属性。属性的“帮助”主题中会标明可以设置该属性(可读写),或只能读取该属性(只读)。通过返回对象的一个属性值,可以获取有关该对象的信息。下列示例返回活动文档的名称。SubGetDocumentName()DimstrDocNameAsStringstrDocName=ActiveDocument.NameMsgBoxstrDocNameEndSub(这个例子输出的没有路径,只有名字.若带路径的话,把strDocName=ActiveDocument.Name改为:strDocName=ActiveDocument.Path&ActiveDocument.Name)在本例中,ActiveDocument引用Word活动窗口中的文档。该文档的名称赋给了strDocName变量。说明:每个属性的“帮助”主题表明可以设置该属性(可读写),只能读取该属性(只读),或只能写入该属性(只写)。此外“VisualBasic编辑器”中的“对象浏览器”在浏览窗口的底部显示所选属性的读写状态。什么是方法?方法是对象可以执行的动作。例如,只要文档可以打印,Document对象就具有PrintOut方法。方法通常带有参数,以限定执行动作的方式。下列示例打印活动文档的前三页。SubPrintThreePages()ActiveDocument.PrintOutRange:=wdPrintRangeOfPages,Pages:=1-3EndSub在大多数情况下,方法是动作,而属性是性质。使用方法将导致发生对象的某些事件(所以,有人说:“方法是集成了的事件”),而使用属性则会返回对象的信息,或引起对象的某个性质的改变。返回一个对象可通过返回集合中单独的对象的方式来返回大多数对象。例如Documents集合包含打开的Word文档。可使用(位于Word对象结构顶层的)Application对象的Documents属性返回Documents集合。在访问集合之后,可以通过在括号中使用索引序号(与处理数组的方式相似)返回单独的对象。索引序号通常是一个数值或名称。详细内容,请参阅返回集合中的对象。下列示例使用Documents属性访问Documents集合。索引序号用于返回Documents集合中的第一篇文档。然后将Close方法应用于Document对象,关闭Documents集合中的第一篇文档。SubCloseDocument()Documents(1).CloseEndSub'这个可能以后大多不用,原因就是索引序号在变,当打开、关闭一个文档时,对应的序号就增加或减少了数字,所以不好把握,大多不用。下列示例使用名称(指定为一个字符串)来识别Documents集合中的Document对象。SubCloseSalesDoc()Documents(Sales.doc).CloseEndSub'这个常用,让某个指定的文档关闭。集合对象通常具有可用于修改整个对象集合的方法和属性。Documents对象具有Save方法,可用于保存集合中的所有文档。下列示例通过使用Save方法保存所有打开的文档。SubSaveAllOpenDocuments()Documents.SaveEndSub'所有的文档保存,相当于按住Shift再点击文件下的全部保存命令。Document对象也可使用Save方法保存单独的文档。下列示例保存名为Sales.doc的文档。SubSaveSalesDoc()Documents(Sales.doc).SaveEndSub'对指定的文档保存。若要返回一个处于Word对象结构底层的对象,就必须使用可返回对象的属性和方法,“深入”到该对象。若要查看该过程的执行,请打开“VisualBasic编辑器”,在“视图”菜单上单击“对象浏览器”。单击左侧“类”列表中的Application。然后单击右侧“成员”列表中的ActiveDocument。“对象浏览器”底部会显示文字,表明ActiveDocument是只读的,该属性返回Document对象。然后单击“对象浏览器”底部的Document,则会在“类”列表中自动选定Document对象,并将在“成员”列表中显示Document对象的成员。滚动成员列表,找到Close,单击Close方法。“对象浏览器”窗口底部会显示文字,说明该方法的语法。有关该方法的详细内容,请按F1(作者注:不把F1磨平,VBA很难真正掌握^-^)或单击“帮助”按钮,以跳转到Close方法的“帮助”主题。根据这些信息可编写下列指令,以关闭活动文档。SubCloseDocSaveChanges()ActiveDocument.CloseSaveChanges:=wdSaveChangesEndSub'关闭并保存改变。这里显然,保存为方法,后面有参数下列示例将活动文档窗口最大化。SubMaximizeDocumentWindow()ActiveDocument.ActiveWindow.WindowState=wdWindowStateMaximizeEndSub'这个是赋最大化值属性给活动窗口ActiveWindow属性返回一个Window对象,该对象代表活动窗口。将WindowState属性设为最大常量(wdWindowStateMaximize)。下列示例新建一篇文档,并显示“另存为”对话框,这样即可为文档提供一个名称。SubCreateSaveNewDocument()Documents.Add.SaveEndSub'这个有意思,添加新文档并保存,一步,利害吧'如果不是看帮助,你敢这么用吗?方法.方法Documents属性返回Documents集合。Add方法新建一篇文档,并返回一个Document对象。然后对Document对象应用Save方法。如上所示,可以使用方法或属性来访问下层对象。也就是说,在对象结构中,将方法或属性应用于某个对象的上一级对象,可返回该下级对象。返回所需对象之后,就可以应用该对象的方法并控制其属性。要查看对象结构分层的情况,请参阅MicrosoftWord对象。获得有关对象、方法和属性的“帮助”信息在熟悉Word对象模型之前,可以利用一些工具来深入了解对象结构。自动成员列表。(重要)在“VisualBasic编辑器”中,在对象后面键入句号(.)后,即显示可用的属性和方法的列表。例如,如果键入“Application.”,就会显示Application对象的方法和属性的下拉列表。帮助。也可以使用“帮助”找到可应用于对象的属性和方法。“帮助”中的每个对象主题都包含一个“参阅”跳转,以显示该对象的属性和方法列表。在“对象浏览器”或某一模块中按F1,可跳转到相应的“帮助”主题。MicrosoftWord对象。该主题阐明在分级结构中Word对象的排列方式。在结构图中单击一个对象,可显示相应的“帮助”主题。对象浏览器。“VisualBasic编辑器”中的“对象浏览器”显示Word对象的成员(属性和方法)。-----------------------------------------实例:打开Word后,按Alt+F11,出现VBE窗口,双击右边的Thisdocument(当然,放到底下的模块中任一个也行),输入如下内容:Subautoexec()Application.Caption=我爱我家!EndSub这时,关闭Word,再打开Word。你的标题就有“×××.doc—我爱我家!”了!图表2当然,也可以进一步做成这样:Subautoexec()Dimaa=MsgBox(我家我家,vbYesNo,这是一个试验)Ifa6ThenApplication.QuitEndIfEndSub'功能就是打开Word时,显示此对话框,如果点了“是”就不作处理即打开Word,否则,退出Quit。也可以写成这样:Subautoexec()Dimaa=InputBox(你的姓名,防君子,不防小人!)Ifa小小ThenApplication.QuitEndIfEndSub'功能就是打开Word时,显示此对话框,如果输入的不是小小,就打不开。MsgBox函数参考:在对话框中显示消息,等待用户单击按钮,并返回一个Integer告诉用户单击哪一个按钮。语法MsgBox(prompt[,buttons][,title][,helpfile,context])MsgBox函数的语法具有以下几个命名参数:部分描述Prompt必需的。字符串表达式,作为显示在对话框中的消息。prompt的最大长度大约为1024个字符,由所用字符的宽度决定。如果prompt的内容超过一行,则可以在每一行之间用回车符(Chr(13))、换行符(Chr(10))或是回车与换行符的组合(Chr(13)&Chr(10))将各行分隔开来。Buttons可选的。数值表达式是值的总和,指定显示按钮的数目及形式,使用的图标样式,缺省按钮是什么以及消息框的强制回应等。如果省略,则buttons的缺省值为0。Title可选的。在对话框标题栏中显示的字符串表达式。如果省略title,则将应用程序名放在标题栏中。Helpfile可选的。字符串表达式,识别用来向对话框提供上下文相关帮助的帮助文件。如果提供了helpfile,则也必须提供context。Context可选的。数值表达式,由帮助文件的作者指定给适当的帮助主题的帮助上下文编号。如果提供了context,则也必须提供helpfile。设置值buttons参数有下列设置值:常数值描述vbOKOnly0只显示OK按钮。VbOKCancel1显