2004-12-22 10:43作者:寻大勇出处:计算机与信息技术责任编辑:方舟
摘要:分析了Word对象模型的结构,特别是Document对象及其使用方法,提出了在Visual Basic中创建Word格式文档的方法,并给出了该方法的应用实例。
关键词:Visual Basic,Word对象模型,文档
引言
Word文档是实际工作学习中最为常用的文档格式之一。
随着社会信息化程度的提高,一些传统的由人工完成工作逐渐转向由计算机来处理。计算机自动组卷系统便是一个典型的例子。为了追求更高的效率,一些计算机自动组卷系统的单位用户要求由软件输出Word格式的试卷不需排版直接供印刷使用。
由于Microsoft Office套件的普及,Word文档、电子表格文档、电子幻灯片等文档日渐常用。虽然在Office中各个程序的文档可以方便地转换,但是这种转换是以失去文档原本的格式为代价的。例如,在自动组卷系统中,存储在Access数据库中的试卷可以通过Access提供的导出功能产生Word文档,但产生的文档是无格式的,需花费大量时间重新排版方可符合用户在试卷格式上的要求。
针对这一问题,本文讨论通过研究Word对象模型,提出使用该对象模型创建符合用户所要求的特定格式的Word文档的方法。
Word对象模型
1、Word对象模型层次结构
对象是 Visual Basic的基石,几乎在 Visual Basic 中的每个操作都与修改对象有关。Word 的任何元素(如文档、表格、段落、域、书签等)都可以用 Visual Basic 中的对象来代表。
对象代表一个 Word 的元素,如文档、段落、书签或单个的字符。集合也是一个对象,该对象包含其他数个对象,通常这些对象属于相同的类型,例如,一个集合对象中可包含文档中的所有书签对象。通过使用属性和方法,可以修改单个的对象,也可修改整个的对象集合。
Microsoft Word Visual Basic提供一套完整的Word对象模型,这是一个以Application为顶层对象的对象层次结构。其结构如图-1所示。
对象由两种类型的成员构成,一种是属性,第二种成员是方法。
属性是对象的一个特性或者该对象行为的一个方面。例如,文档属性包含名称、内容、保存状态以及是否启用修订。要更改一个对象的特征,可以修改其属性值。要设置一个属性的值,需在对象的后面紧接一个句点、属性名称、一个等号及新的属性值。下面的示例在"MyDoc.doc"文档中启用修订。
方法是对象可以进行的动作。例如,只要文档可以打印,Document 对象就具有 PrintOut 方法。方法通常都带有参数,限定动作将如何进行。下面的示例打印活动文档的前三页。
在大多数情况下,方法是动作,而属性是性质。使用方法将导致针对对象的某些事情发生,而使用属性则会返回对象的信息,或者引起对象的某个性质的改变。
2、Document对象和Documents 集合对象
在 Visual Basic 中,可使用 Document 对象或 Documents 集合对象的方法来修改文件。Document 对象是本文用来创建Word 文档的主要对象。
Word对象模型中Documents(Document)对象集(或Document)对象的结构如图-2所示。
其中的 Paragraphs 集合对象与PageSetup对象将是下文的主角。Paragraphs 集合对象是由选定内容、范围或文档中的 Paragraph 对象组成的集合。PageSetup 对象代表页面设置描述。PageSetup 对象包含了文档的所有页面设置属性(左边距、下边距、纸张大小,等等)。
在熟悉了Word 对象模型的基础上,我们可以使用Document 对象对Word 文档进行各种操作,例如:
2.1 新建一篇文档
Documents 集合包含所有打开的文档。要新建一篇文档,可使用 Add 方法将一个 Document 对象添至 Documents 集合。
新建文档的方法之一是使用Add方法。Add 方法将返回 Document 对象,该对象引用新文档。在下面的示例中,把 Add 方法返回的 Document 对象赋予一个对象变量 newDoc。然后设置该 Document 对象的几种属性和方法。通过 newDoc 对象变量,可以很容易地控制新文档。
2.2 打开文档
要打开一篇现有的文档,可使用 Documents 集合的 Open 方法。下面的代码打开名为 MyDocument.doc 的文档(该文档位于"MyFolder"文件夹中)。
2.3 保存一篇现有文档
要保存一篇文档,可使用 Document 对象的 Save 方法。下面的代码保存名为 Sales.doc 的文档。
如果对 Documents 集合应用 Save 方法,可以保存所有打开的文档。下面的代码保存所有打开的文档。
2.4 保存一篇新文档
要保存一篇文档,可使用 Document 对象的 SaveAs 方法。下面的代码将活动文档保存于当前文件夹,取名为"Temp.doc"。
FileName 参数可以只包含文件名,也可包含完整的路径(例如"C:/Documents/Temporary File.doc")。
2.5 关闭文档
要关闭单个文档,可使用 Document 对象的 Close 方法。下面的代码关闭并保存名为 Sales.doc 的文档。
可应用 Documents 集合的 Close 方法关闭所有的文档。下面的代码在不保存修改的情况下关闭所有的文档。
关键词:Visual Basic,Word对象模型,文档
引言
Word文档是实际工作学习中最为常用的文档格式之一。
随着社会信息化程度的提高,一些传统的由人工完成工作逐渐转向由计算机来处理。计算机自动组卷系统便是一个典型的例子。为了追求更高的效率,一些计算机自动组卷系统的单位用户要求由软件输出Word格式的试卷不需排版直接供印刷使用。
由于Microsoft Office套件的普及,Word文档、电子表格文档、电子幻灯片等文档日渐常用。虽然在Office中各个程序的文档可以方便地转换,但是这种转换是以失去文档原本的格式为代价的。例如,在自动组卷系统中,存储在Access数据库中的试卷可以通过Access提供的导出功能产生Word文档,但产生的文档是无格式的,需花费大量时间重新排版方可符合用户在试卷格式上的要求。
针对这一问题,本文讨论通过研究Word对象模型,提出使用该对象模型创建符合用户所要求的特定格式的Word文档的方法。
Word对象模型
1、Word对象模型层次结构
对象是 Visual Basic的基石,几乎在 Visual Basic 中的每个操作都与修改对象有关。Word 的任何元素(如文档、表格、段落、域、书签等)都可以用 Visual Basic 中的对象来代表。
对象代表一个 Word 的元素,如文档、段落、书签或单个的字符。集合也是一个对象,该对象包含其他数个对象,通常这些对象属于相同的类型,例如,一个集合对象中可包含文档中的所有书签对象。通过使用属性和方法,可以修改单个的对象,也可修改整个的对象集合。
Microsoft Word Visual Basic提供一套完整的Word对象模型,这是一个以Application为顶层对象的对象层次结构。其结构如图-1所示。
|
对象由两种类型的成员构成,一种是属性,第二种成员是方法。
属性是对象的一个特性或者该对象行为的一个方面。例如,文档属性包含名称、内容、保存状态以及是否启用修订。要更改一个对象的特征,可以修改其属性值。要设置一个属性的值,需在对象的后面紧接一个句点、属性名称、一个等号及新的属性值。下面的示例在"MyDoc.doc"文档中启用修订。
Documents("MyDoc.doc").TrackRevisions = True |
方法是对象可以进行的动作。例如,只要文档可以打印,Document 对象就具有 PrintOut 方法。方法通常都带有参数,限定动作将如何进行。下面的示例打印活动文档的前三页。
ActiveDocument.PrintOut From:=1, To:=3 |
在大多数情况下,方法是动作,而属性是性质。使用方法将导致针对对象的某些事情发生,而使用属性则会返回对象的信息,或者引起对象的某个性质的改变。
2、Document对象和Documents 集合对象
在 Visual Basic 中,可使用 Document 对象或 Documents 集合对象的方法来修改文件。Document 对象是本文用来创建Word 文档的主要对象。
Word对象模型中Documents(Document)对象集(或Document)对象的结构如图-2所示。
|
其中的 Paragraphs 集合对象与PageSetup对象将是下文的主角。Paragraphs 集合对象是由选定内容、范围或文档中的 Paragraph 对象组成的集合。PageSetup 对象代表页面设置描述。PageSetup 对象包含了文档的所有页面设置属性(左边距、下边距、纸张大小,等等)。
在熟悉了Word 对象模型的基础上,我们可以使用Document 对象对Word 文档进行各种操作,例如:
2.1 新建一篇文档
Documents 集合包含所有打开的文档。要新建一篇文档,可使用 Add 方法将一个 Document 对象添至 Documents 集合。
新建文档的方法之一是使用Add方法。Add 方法将返回 Document 对象,该对象引用新文档。在下面的示例中,把 Add 方法返回的 Document 对象赋予一个对象变量 newDoc。然后设置该 Document 对象的几种属性和方法。通过 newDoc 对象变量,可以很容易地控制新文档。
Set newDoc = Documents.Add With newDoc .Content.Font.Name = "Arial" .SaveAs FileName:="Sample.doc" End With |
2.2 打开文档
要打开一篇现有的文档,可使用 Documents 集合的 Open 方法。下面的代码打开名为 MyDocument.doc 的文档(该文档位于"MyFolder"文件夹中)。
Documents.Open FileName:="C:/MyFolder/MyDocument.doc" |
2.3 保存一篇现有文档
要保存一篇文档,可使用 Document 对象的 Save 方法。下面的代码保存名为 Sales.doc 的文档。
Documents("Sales.doc").Save |
如果对 Documents 集合应用 Save 方法,可以保存所有打开的文档。下面的代码保存所有打开的文档。
Documents.Save |
2.4 保存一篇新文档
要保存一篇文档,可使用 Document 对象的 SaveAs 方法。下面的代码将活动文档保存于当前文件夹,取名为"Temp.doc"。
ActiveDocument.SaveAs FileName:="Temp.doc" |
FileName 参数可以只包含文件名,也可包含完整的路径(例如"C:/Documents/Temporary File.doc")。
2.5 关闭文档
要关闭单个文档,可使用 Document 对象的 Close 方法。下面的代码关闭并保存名为 Sales.doc 的文档。
Documents("Sales.doc").Close SaveChanges:=wdSaveChanges |
可应用 Documents 集合的 Close 方法关闭所有的文档。下面的代码在不保存修改的情况下关闭所有的文档。
Documents.Close SaveChanges:=wdDoNotSaveChanges |
在Visual Basic中创建Word文档
1、Visual Basic中创建Document对象
所有的工作都从Document对象开始,首先在Visual Basic中创建一个Document对象的实例,然后就可以对该实例进行各种可控制:
一旦创建了Document对象,就可以设置文档的缺省格式,通过设置Content子对象的字体、行间距等属性加以实现:
由此得到了一个空Word文档。
2、向Word文档中添加文本
接下来,向空文档中添加文本,这将使用Paragraphs集合对象来完成此项工作。InsertAfter方法将文本插入到Selection 或 Range 对象后;InsertBefore 方法将文本插入到Selection 或 Range 对象前。以下代码向文档结尾处添加一个段落并设置本段落格式:
可用 Paragraphs(index) 返回一个 Paragraph 对象,其中 index 为索引号;count属性值表示该文档主文字部分中的Paragraph对象数。NewDoc.Paragraphs.count恰好为当前正在添加的文本段落的索引号。
如果需要插入表格,可以使用Table 对象。Add 方法可以在指定范围内新增一表格。下例在活动文档的起始处添加一 3 x 4 的表格。
以可以使用制表字符得到表格。以下代码在文档尾部插入一个1x4 的表格。
创建的表格如图-3所示:
3、页面设置
当所有段落都添加到文档以后,可以使用 PageSetup对象进行页面设置,这需要通过设置PageSetup对象的各种属性来完成。
3.1 设置分栏和栏间距:
3.2 设置页边距:
3.3 设置纸张大小:
其他的设置项目不再详述。
4、输出文档
对创建完毕的文档,我们可以选自保存为磁盘文件或直接打印输出:
应用实例
以上方法在笔者为某市市委组织部开发的计算机自动组卷系统中加以应用,该系统流程如图-4所示。
该系统产生的试卷要求直接用于考核和选拔基层干部的考试中,首先由出题者输入试卷参数,即组卷规则,然后由软件自动组卷并输出Word格式的试卷。笔者应用上述方法开发的软件系统完全满足了用户需求。系统现已投入运行,极大地提高了工作效率,获得了用户的好评。
结束语
本文提出的在Visual Basic中创建Word文档的方法基于对象模型,实用性强,也可以用于其它支持ActiveX的开发平台中。
1、Visual Basic中创建Document对象
所有的工作都从Document对象开始,首先在Visual Basic中创建一个Document对象的实例,然后就可以对该实例进行各种可控制:
Dim newDoc As Word.Document Set newDoc = new Word.Document |
一旦创建了Document对象,就可以设置文档的缺省格式,通过设置Content子对象的字体、行间距等属性加以实现:
With newDoc .Content.Font.Name = "宋体" .Content.Font.Size = 12 .Content.Paragraphs.LineSpacing = 15.5 End With |
由此得到了一个空Word文档。
2、向Word文档中添加文本
接下来,向空文档中添加文本,这将使用Paragraphs集合对象来完成此项工作。InsertAfter方法将文本插入到Selection 或 Range 对象后;InsertBefore 方法将文本插入到Selection 或 Range 对象前。以下代码向文档结尾处添加一个段落并设置本段落格式:
With newDoc .Content.InsertAfter "示例段落…" .Paragraphs(NewDoc.Paragraphs.count).Alignment = wdAlignParagraphCenter .Paragraphs(NewDoc.Paragraphs.count).Range.Font.Bold = True .Paragraphs(NewDoc.Paragraphs.count).Range.Font.Size = 28 End With |
可用 Paragraphs(index) 返回一个 Paragraph 对象,其中 index 为索引号;count属性值表示该文档主文字部分中的Paragraph对象数。NewDoc.Paragraphs.count恰好为当前正在添加的文本段落的索引号。
如果需要插入表格,可以使用Table 对象。Add 方法可以在指定范围内新增一表格。下例在活动文档的起始处添加一 3 x 4 的表格。
Set myRange = ActiveDocument.Range(Start:=0, End:=0) ActiveDocument.Tables.Add Range:=myRange, NumRows:=3, NumColumns:=4 |
以可以使用制表字符得到表格。以下代码在文档尾部插入一个1x4 的表格。
NewDoc.Content.InsertAfter "得分" & vbTab & " " & vbTab & "评卷人" & vbTab & " " & vbCr |
创建的表格如图-3所示:
|
3、页面设置
当所有段落都添加到文档以后,可以使用 PageSetup对象进行页面设置,这需要通过设置PageSetup对象的各种属性来完成。
3.1 设置分栏和栏间距:
newDoc.PageSetup.TextColumns.SetCount NumColumns:=2 newDoc.PageSetup.TextColumns.Spacing = CentimetersToPoints(2) |
3.2 设置页边距:
With newDoc.PageSetup .TopMargin = CentimetersToPoints(4.5) .BottomMargin = CentimetersToPoints(1.5) .LeftMargin = CentimetersToPoints(0.8) .RightMargin = CentimetersToPoints(2) End With |
3.3 设置纸张大小:
With newDoc.PageSetup .PageHeight = CentimetersToPoints(28.1) .PageWidth = CentimetersToPoints(38.9) End With |
其他的设置项目不再详述。
4、输出文档
对创建完毕的文档,我们可以选自保存为磁盘文件或直接打印输出:
newDoc.SaveAs FileName:="Sample.doc" newDoc.PrintOut |
应用实例
以上方法在笔者为某市市委组织部开发的计算机自动组卷系统中加以应用,该系统流程如图-4所示。
|
该系统产生的试卷要求直接用于考核和选拔基层干部的考试中,首先由出题者输入试卷参数,即组卷规则,然后由软件自动组卷并输出Word格式的试卷。笔者应用上述方法开发的软件系统完全满足了用户需求。系统现已投入运行,极大地提高了工作效率,获得了用户的好评。
结束语
本文提出的在Visual Basic中创建Word文档的方法基于对象模型,实用性强,也可以用于其它支持ActiveX的开发平台中。