(程序4) 要充分利用Word的自动服务功能,则必须对Word的对象模型有较为深入的了解,Wo rd 对象模型中有一系列属于Application的对象和集合。以下示例程序均是用VB或VBA语言
编写的。 (1)Application对象代表Word应用程序,包括可以返回最高一级对象的属性和方法 。 例如ActiveDocument属性可以返回Document对象。在使用可返回最普通的用户界面对象 的 许多属性和方法(比如活动文档,即ActiveDocument属性)时,可不必用Application对
象进行区分。例如,可写成ActiveDocument.PrintOut,而不必写成 Application.ActiveDocument.PrintOut。使用时不受Application对象限制的属性和方 法 被看作是“共用”的。Application对象的方法有Move、OnTime、Quit、Run等,属性有
ActiveDocument、ActivePrinter、caption、Documents、FontName、Path、visible、
WindowState、WordBasic等。 (2)Documents对象是由Word当前打开的所有Document对象所组成的集合,下列示例
显示各打开文档的名称: For Each aDoc In Documents
aName = aName & aDoc.Name & vbCr
Next aDoc
MsgBox aName
用Add方法可以创建新的空文档,并将其添加到Documents集合中。用Open方法可以
打开文档。用Documents(index)可以返回单个的Document对象,其中的index是文档的名
称或索引序号。下面的语句用来关闭Report.doc文档,并且不保存所作的修改: Documents("Report.doc").CloseSaveChanges:=wdAppDoNotSaveChanges 索引序号代表文档在Documents集合中的位置,例如Documents(1).Activate是代表 激 活Documents集合中的第一个文档,但建议使用Documents("Report.doc")这样的显式引 用, 这样可以使可读性强,而且不易出错。 (3)Document对象代表一篇文档,Document对象是Documents集合中的一个元素。 Documents集合包含Word当前打开的所有Document对象。 可用ActiveDocument属性引用处于活动状态的文档。下列示例是用Activate方法激 活 名为Document1的文档,然后将页面方向设置为横向并打印该文档: Documents("Document1").Activate
ActiveDocument.PageSetup.Orientation = wdAppOrientLandscape
ActiveDocument.PrintOut
它的方法和属性各有数十个,不过常用的并不多,如Range、Save、SaveAs、Prote ct、 Close、Goto、Unprotect等方法和ActiveWindow、FullName、HasPassWord、Name、Pag eSetup、 Password、Path、ReadOnly、Saved、SaveFormat等属性。 (4)Selection对象代表一个窗格中的选定内容,该选定内容可以包括文档中的一个 区 域,也可以仅包括插入点。可用Information属性返回有关选定内容的信息: If Selection.Information(wdAppWithInTable) = True Then... 也可用Select方法选定文档中的一个项目,下例是选定活动文档中的第一个书签并 将 其显示为红色: If ActiveDocument.Bookmarks.Count >= 1 Then
ActiveDocument.Bookmarks(1).Select
Selection.Font.ColorIndex = wdAppRed
End If
Selection对象还包括几种用于扩展或移动当前选定内容的方法,例如,可以将Mov eDown 方法的Extend参数设为wdAppExtend。下例在活动窗口中选定接下的三段: .StartOf Unit:=wdAppParagraph, Extend:=wdAppMove
.MoveDown Unit:=wdAppParagraph, Count:=3, Extend:=wdAppExtend
End With
记录宏时,宏记录器经常将变化记录到Selection对象中。下例中宏将文档的起始两 个 词设为加粗格式并新添加一段: Selection.HomeKey Unit:=wdAppStory
Selection.MoveRight Unit:=wdAppWord, Count:=2, Extend:=wdAppExtend
Selection.Font.Bold = wdAppToggle
Selection.MoveRight Unit:=wdAppCharacter, Count:=1
Selection.TypeParagraph
下例完成与上例相同的操作,但不使用Selection对象: Set myRange = ActiveDocument.Range(Start:=0,_
End:=ActiveDocument.Words(2).End)
myRange.Bold = True
myRange.InsertParagraphAfter
每个窗格中只能有一个Selection对象,但在一个文档中可以有多个Range对象。一 个 Range对象代表文档中一个已选定或未选定的范围,用Range对象可以很方便地对文档进 行 操作。 (5)Range对象代表文档中的一个范围,每一个Range对象由一个起始位置字符和一个
终止位置字符定义,下例返回代表活动文档前10个字符的Range对象: Set myRange = ActiveDocument.Range(Start:=0, End:=10) (6)Table对象代表一张表格,它是Tables集合的一个成员。该集合包含指定的选定 内 容、范围或文档中的所有表格。可以使用Tables(index)返回一个Table对象,其中inde x 为索引序号,代表表格在选定内容、范围或文档中的位置,下例是将活动文档中的第一 张表 格转换为文本: ActiveDocument.Tables(1).ConvertToText Separator:=wdAppSeparateByTabs 使用Add方法可以在指定范围内添加表格。下例在活动文档的起始处添加一张3行x4
列的表格: Set myRange = ActiveDocument.Range(Start:=0, End:=0) ActiveDocument.Tables.Add Range:=myRange, NumRows:=3, NumColumns:=4 (7)Goto方法是一个很有用的方法,对于Document或Range对象而言,此方法返回一
个Range对象,该对象代表指定项(例如页、书签或域)的开始位置。对于Selection对 象, 将插入点移动到指定项前面的字符位置。下面的示例将所选内容移动到文档中的第四行 : Selection.GoTo What:=wdAppGoToLine, Which:=wdAppGoToAbsolute, Count:=4 下面的示例将所选内容向上移动两行: Selection.GoTo What:=wdAppGoToLine, Which:=wdAppGoToPrevious, Count:=2 下面的示例将所选内容移动到下一个表格的第一个单元格: Selection.GoTo What:=wdAppGoToTable, Which:=wdAppGoToNext 程序5是综合处理的例子,它显示如何对既有文本又有图表的文档进行定位; Sub ShowCellName() '打印出每个单元格的名字 Set newdAppoc = ActiveDocument
Set myTable = newdAppoc.Tables(1)
i = 1
For Each c In myTable.Range.Cells
c.Range.InsertAfter "Cell " & i
i = i + 1
Next c
'单元格定位及合并,注意单元格的引用 Set myTable = ActiveDocument.Tables(1)
Set myRange = ActiveDocument.Range(myTable.cell(1, 2).Range.Start,
myTable.cell(1, 3).Range.End)
myRange.Cells.Merge
'插入点的定位,绝对定位至Tables(1).cells(1,1) Selection.GoTo What:=wdAppGoToTable, Which:=wdAppGoToAbsolute, Count:=1
End Sub
(程序5) 下面的例子是查看插入点的位置: if Selection.Information(wdAppWithInTable)
Then Selection.Tables(1).Select
如果所选的内容位于一个表格中,则本示例选定该表格。 6.建议 (1)在使用别的开发语言操纵word进行自动服务之前,请先多多使用Word VBA,以便
熟悉Word的对象模型。因为它的在线提示功能非常有用,并且查阅Visual Basic参考资 料 也很方便。 (2)Word对象模型的文档包含在Microsoft Word Visual Basic Reference(VBAWRD8 .HLP) 帮助文件中,在典型的Office安装过程中,该文件不被安装,但可以在定制安装过程中 选 择安装它。该文档是很有用的参考,但不能指望仅仅依靠该文档来掌握Word的对象模型 , 特别是对于初学者而言,更多的应该是进行思考和验证。 |