从数据库输出word报表

从数据库输出word报表
2008-04-30 18:28
(程序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的对象模型

特别是对于初学者而言,更多的应该是进行思考和验证。
http://www.lilacbbs.com/bbsanc.php?path=%2Fgroups%2FGROUP_3%2FVB%2Fmiddle%2FD78915E60%2Fm15
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值