摘要:分析了Word物件模型的結構,特別是Document物件及其使用方法,提出了在VisualBasic中建立Word格式文件的方法,並給出了此方法的應用實例。
關鍵字:VisualBasic,Word物件模型,文檔
引言
Word文件是實際工作學習中最常用的文件格式之一。
隨著社會資訊化程度的提高,一些傳統的由人工完成工作逐漸轉向由電腦來處理。電腦自動組卷系統就是一個典型的例子。為了追求更高的效率,一些電腦自動組卷系統的單位使用者要求由軟體輸出Word格式的試卷不需排版直接供印刷使用。
由於MicrosoftOffice套件的普及,Word文件、電子表格文件、電子投影片等文件日漸常用。雖然在Office中各個程式的文檔可以方便地轉換,但是這種轉換是以失去文檔原本的格式為代價的。例如,在自動組卷系統中,儲存在access資料庫中的試卷可以透過Access提供的匯出功能產生Word文檔,但產生的文檔是無格式的,需花費大量時間重新排版方可符合使用者在試卷格式上的要求。
針對此問題,本文討論透過研究Word物件模型,提出使用此物件模型建立符合使用者所要求的特定格式的Word文件的方法。
Word物件模型
1、Word物件模型層次結構
物件是VisualBasic的基石,幾乎在VisualBasic中的每個操作都與修改物件有關。 Word的任何元素(如文件、表格、段落、網域、書籤等)都可以用VisualBasic中的物件來代表。
物件代表一個Word的元素,如文檔、段落、書籤或單一的字元。集合也是一個對象,該對象包含其他數個對象,通常這些對象屬於相同的類型,例如,一個集合對像中可包含文件中的所有書籤對象。透過使用屬性和方法,可以修改單一的對象,也可修改整個的物件集合。
MicrosoftWordVisualBasic提供一套完整的Word物件模型,這是一個以application為頂層物件的物件層次結構。其結構如圖-1所示。
物件由兩種類型的成員構成,一種是屬性,第二種成員是方法。
屬性是物件的一個特性或該物件行為的一個面向。例如,文件屬性包含名稱、內容、儲存狀態以及是否啟用修訂。若要變更一個物件的特徵,可以修改其屬性值。要設定一個屬性的值,需在物件的後面緊接著一個句點、屬性名稱、一個等號及新的屬性值。下面的範例在"MyDoc.doc"文件中啟用修訂。
方法是物件可以進行的動作。例如,只要文件可以列印,Document物件就具有PRintOut方法。方法通常都帶有參數,限定動作會如何進行。下面的範例列印活動文件的前三頁。
在大多數情況下,方法是動作,而屬性是性質。使用方法將導致針對物件的某些事情發生,而使用屬性則會傳回物件的訊息,或引起物件的某個性質的改變。
2、Document對象與Documents集合對象
在VisualBasic中,可使用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/TemporaryFile.doc")。
2.5關閉文檔
若要關閉單一文檔,可使用Document物件的Close方法。下面的程式碼關閉並儲存名為Sales.doc的文件。
可套用Documents集合的Close方法關閉所有的文件。下面的程式碼在不儲存修改的情況下關閉所有的文件。
在VisualBasic中建立Word文檔
1、VisualBasic中建立Document對象
所有的工作都從Document物件開始,先在VisualBasic中建立一個Document物件的實例,然後就可以對該實例進行各種可控制:
一旦建立了Document對象,就可以設定文件的缺省格式,透過設定Content子對象的字體、行間距等屬性加以實現:
由此得到了一個空Word文件。
2、在Word文檔中新增文本
接下來,向空文檔中添加文本,這將使用Paragraphs集合物件來完成此項目工作。 InsertAfter方法將文字插入Selection或Range物件後;InsertBefore方法將文字插入Selection或Range物件前。以下程式碼在文件結尾處新增一個段落並設定本段落格式:
可用Paragraphs(index)傳回一個Paragraph對象,其中index為索引號;count屬性值表示該文檔主文字部分中的Paragraph對象數。 NewDoc.Paragraphs.count恰好為目前正在新增的文字段落的索引號。
如果需要插入表格,可以使用Table物件。 Add方法可以在指定範圍內新增一表格。下例在活動文件的起始處新增一3x4的表格。
以可以使用製表字元得到表格。以下程式碼在文件尾部插入一個1x4的表格。
建立的表格如圖-3所示:
3、頁面設定
當所有段落都添加到文件以後,可以使用PageSetup物件進行頁面設置,這需要透過設定PageSetup物件的各種屬性來完成。
3.1設定分欄和欄間距:
3.2設定頁邊距:
3.3設定紙張大小:
其他的設置項目不再詳述。
4、輸出文檔
對建立完畢的文檔,我們可以選自儲存為磁碟文件或直接列印輸出:
應用實例
以上方法在筆者為某市市委組織部開發的電腦自動組卷系統中加以應用,該系統流程如圖-4所示。
此系統產生的試卷要求直接用於考核和選拔基層幹部的考試中,首先由出題者輸入試卷參數,即組卷規則,然後由軟體自動組卷並輸出Word格式的試卷。由筆者應用上述方法所開發的軟體系統完全滿足了使用者需求。系統現已投入運行,大大提高了工作效率,並獲得了用戶的好評。
結束語
本文提出的在VisualBasic中建立Word文件的方法是基於物件模型,實用性強,也可以用於其它支援ActiveX的開發平台中。 ->