top
Loading...
在VisualBasic6.0中創建Word文檔
摘要:分析了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"文檔中啟用修訂。

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:MyFolderMyDocument.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:DocumentsTemporary 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對象的實例,然后就可以對該實例進行各種可控制:

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的開發平臺中。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗