word 模型

1  Word組件對象模型  
Microsoft Office Word 2003 對象是按層次順序排列的,層次結構頂端的兩個主類是 Application 類和 Document 類。這兩個類非常重要,因爲在大部分時間裏,您要麼是在使用 Word 應用程序本身,要麼是以某種方式處理 Word 文檔。Word 對象模型嚴格遵循用戶界面。Application 對象提供整個應用程序的包裝,每個 Document 對象表示單個 Word 文檔。這些對象各自都有很多方法和屬性,您可以使用這些方法和屬性操作對象或與對象交互。
Application 對象。Application 對象表示 Word 應用程序,是其他所有對象的父級。它的所有成員通常作爲一個整體應用於 Word。可以使用該對象的屬性和方法來控制 Word 環境。
Document 對象。Document 對象是 Word 編程的中樞。當您打開文檔或創建新文檔時,就創建了新的 Document 對象,該對象被添加到 Word 的 Documents 集合中。焦點所在的文檔叫做活動文檔,由 Application 對象的 ActiveDocument 屬性表示。
Selection 對象。Selection 對象表示當前選擇的區域,Selection 對象只存在一個。在 Word 用戶界面中執行某項操作(例如,對文本進行加粗)時,應首先選擇或突出顯示文本,然後應用格式設置。Selection 對象始終存在於文檔中。如果未選中任何對象,它表示插入點。此外,該對象還可以表示多個不連續的文本塊。
Range 對象。Range 對象表示文檔中的一個連續的區域,由一個起始字符位置和一個結束字符位置定義。Range 對象的數量並不侷限於一個。您可以在同一文檔中定義多個 Range 對象。
Bookmark 對象。Bookmark 對象與 Range 對象類似,它也表示文檔中的一個連續區域,並具有一個起始位置和一個結束位置。書籤用於在文檔中標記一個位置,或者用作文檔中的文本容器。Bookmark 對象可以小到只有一個插入點,也可以大到整篇文檔。您還可以在文檔中定義多個書籤。
對於Microsoft Office Word 2003,通常可以在..//Microsoft Office//OFFICE11// MSWORD.OLB獲得相關接口類。常用的有_Application, Documents, _Document, Selection, Range等。此外,用於設置字體的_Font,段落格式的_ParagraphFormat,表格對象Tables及Table,目錄對象TablesOfContents及TableOfContents等等也是常用的。

2  Word啓動與退出    
使用Application 對象,關聯接口、釋放接口。具體代碼如下:
_Application theExcelApp;
theExcelApp.CreateDispatch("word.application", NULL); //關聯接口
////退出
theExcelApp.Quit();  ////退出
theExcelApp.ReleaseDispatch();  //釋放接口

3   Word表格操作   
使用單文檔對象_Document,表格集合對象Tables,表格對象Table,行對象Rows,單元格對象Cell,列集合對象Columns,列對象Column,區域對象Range等可對錶格進行操作。
插入表格。使用_Document:: GetTables返回一個Tables對象,使用Tables::Add在指定區域插入一個表格。
獲取列對象。使用Table:: GetColumns返回一個Columns對象,使用Columns:: Item返回一個Column對象。從而可以列爲對象進行操作。
單元格插入文字。使用Table:: Cell返回Cell對象,使用Cell:: GetRange返回區域對象,或者使用Cell::Select使得表格獲得輸入焦點,從而進行編輯。

4  文字轉換爲表格   
當需要把一個記事本(*.txt)文件轉換爲表格插入到Word文檔中。最快捷的作法是將txt內容粘貼到word文檔中,然後將內容轉化爲表格。步驟如下:
首先確定一個插入txt內容的Range對象。
使用Range::InsertFile函數。InsertFile函數聲明爲:
   void Range::InsertFile(LPCTSTR FileName, VARIANT* Range, VARIANT* ConfirmConversions, VARIANT* Link, VARIANT* Attachment)
參數說明如下:
FileName 插入文本路徑。
Range 插入文本內容的Range對象,設爲NULL
ConfirmConversions 確認轉換,設爲FALSE
Link 鏈接到文件,設爲FALSE
Attachment 鏈接行爲,設爲FALSE
使用Range:: ConvertToTable轉換文字爲表格,返回一個Table對象。ConvertToTable函數聲明爲:
LPDISPATCH Range::ConvertToTable(VARIANT* Separator, VARIANT* NumRows, VARIANT* NumColumns, VARIANT* InitialColumnWidth, VARIANT* Format, VARIANT* ApplyBorders, VARIANT* ApplyShading, VARIANT* ApplyFont, VARIANT* ApplyColor, VARIANT* ApplyHeadingRows, VARIANT* ApplyLastRow, VARIANT* ApplyFirstColumn, VARIANT* ApplyLastColumn, VARIANT* AutoFit, VARIANT*, VARIANT* DefaultTableBehavior)
參數說明如下:
Separator 分隔符。通常設爲1,即設置製表符爲分隔符(如果採用其他分隔符,請適當修改)
NumRows 表格行數目
NumColumns 列數目
InitialColumnWidth,Format,ApplyBorders,ApplyShading,ApplyFont,ApplyColor,ApplyBorders,ApplyFirstColumn,ApplyLastColumn, DefaultTableBehavior,均可設爲VarOpt,由系統默認
AutoFit 自動調整。設爲0
也可利用Selection對象代替Range對象進行文本轉換表格,調用函數與Range對象的函數名稱一致,參數略有出入。

5 設置頁碼      
通常我們需要在任意指定頁開始插入新頁碼。網上很多文章都是只能在第二頁開始設置。以下介紹我通過觀察VBA宏代碼得到的一種插入頁碼的方法(實現方法當然可能不止一種,我曾在網上看到曾有一篇文章提及這個問題,但是他的代碼不能正常運行,估計是作者發佈文章的時候有些不小心有遺漏)。要點在於插入分節符和取消,並且要注意返回當前節。步驟如下:
0 在前一頁使用Selection::InsertBreak插入分節符,參數值爲2(參數值7爲分頁符)。
1 使用_Document::GetActiveWindow返回窗口Window對象。
2 使用Window:: GetActivePane返回當前活動Pane窗格對象
3 使用Pane::GetView返回View視圖對象,View::SetType(long(3))。
4 使用SetSeekView(long(10))獲得頁眉頁腳視圖。
5 使用Selection::GetHeaderFooter()獲得頁眉頁腳對象HeaderFooter。
6 使用HeaderFooter::SetLinkToPrevious(FALSE)取消“與上一節相同”。
7此時輸入較點Selction停留在上一節的頁腳處。使用View::SetSeekView(long(0))將返回到當前節的文字視圖中。
8 使用View::SetSeekView(long(10))再次獲得本節的頁眉頁腳視圖。
9 使用Selection::GetHeaderFooter()獲得頁眉頁腳對象HeaderFooter。
10 使用HeaderFooter::GetRange獲得Range對象rangeheadfoot。
11 使用Range:: GetFields獲得Fields對象。
12使用Fields:: Add獲得Field對象,具體參數賦值爲Add(rangeheadfoot,COleVariant(short(33)),varOpt,varOpt)。
13 使用Fields::GetPageNumbers()獲得PageNumbers頁碼對象。
14使用PageNumbers對象的方法設置屬性。特別要設置SetStartingNumber(long(1))。
PageNumbers對象的其他設置可參考如下:
SetNumberStyle(long(0));
 SetHeadingLevelForChapter(long(0));
 SetIncludeChapterNumber(FALSE);
 SetChapterPageSeparator(long(0));
 SetRestartNumberingAtSection(true);
15 通過Range對象rangeheadfoot設置頁碼居中及文字大小。
16 結束頁碼設置。使用View::SetSeekView(long(0))返回到文字視圖。

6 插入Excel圖表   
在Excel生成圖表後,Word可將其嵌入文檔中並改變其格式。用戶可以通過雙擊圖表對象激活,然後進行類似於Excel環境下的操作。具體操作如下:
使用Selection:: GetInlineShapes。獲得內嵌區域集合對象InlineShapes。
使用InlineShapes::AddOLEObject插入表格,並獲得內嵌區域對象InlineShape。AddOLEObject函數聲明爲:
LPDISPATCH AddOLEObject(VARIANT* ClassType, VARIANT* FileName, VARIANT* LinkToFile, VARIANT* DisplayAsIcon, VARIANT* IconFileName, VARIANT* IconIndex, VARIANT* IconLabel, VARIANT* Range)
參數說明如下:
ClassType 插入類型,若爲Excel對象,設爲COleVariant("Excel.Sheet.8")。
FileName 文件路徑。
LinkToFile 鏈接到文件。設爲FALSE。
DisplayAsIcon 顯示爲圖標,設爲FALSE。
IconFileName 文件名圖標,設爲VarOpt。
IconIndex 索引圖標,設爲VarOpt。
IconLabel 標籤圖標,設爲VarOpt。
Range 區域,設爲VarOpt。
使用InlineShape的方法SetHeight、SetWidth調整大小。這些方法的參數值都是打印格式下的英磅數值。

7 生成目錄    
單文檔對象_Document,目錄集合對象TablesOfContents,目錄對象TableOfContents及Range對象。操作流程如下:
使用_Document:: GetTablesOfContents返回TablesOfContents對象。
TablesOfContents::Add返回TableOfContents對象。
LPDISPATCH TablesOfContents::Add(LPDISPATCH Range, VARIANT* UseHeadingStyles, VARIANT* UpperHeadingLevel, VARIANT* LowerHeadingLevel, VARIANT* UseFields, VARIANT* TableID, VARIANT* RightAlignPageNumbers, VARIANT* IncludePageNumbers, VARIANT* AddedStyles, VARIANT* UseHyperlinks, VARIANT* HidePageNumbersInWeb, VARIANT* UseOutlineLevels)
參數說明如下:
Range 插入目錄的Range對象。通常目錄是文檔生成結束時進行插入的,因此必須事先指定插入目錄的區域Range對象。
UseHeadingStyles 使用製表符前導符,設爲TRUE
UpperHeadingLevel 頂級目錄,通常設爲1
LowerHeadingLevel 底級目錄,根據需要賦值
UseFields 使用區域,設爲FALSE
TableID 目錄索引,以1起始
RightAlignPageNumbers 頁碼右對齊,設爲TRUE
IncludePageNumbers 包含頁碼,
AddedStyles 增加類型,設爲NULL
UseHyperlinks 使用超鏈接,設爲TRUE
HidePageNumbersInWeb Web頁中隱藏頁碼,設爲TRUE
UseOutlineLevels 使用大綱級別,設爲TRUE
使用TableOfContents:: GetRange獲取區域對象,進行其他例如文字大小控制等操作。
TableOfContents:: UpdatePageNumbers更新頁碼

1  Word組件對象模型  
Microsoft Office Word 2003 對象是按層次順序排列的,層次結構頂端的兩個主類是 Application 類和 Document 類。這兩個類非常重要,因爲在大部分時間裏,您要麼是在使用 Word 應用程序本身,要麼是以某種方式處理 Word 文檔。Word 對象模型嚴格遵循用戶界面。Application 對象提供整個應用程序的包裝,每個 Document 對象表示單個 Word 文檔。這些對象各自都有很多方法和屬性,您可以使用這些方法和屬性操作對象或與對象交互。
Application 對象。Application 對象表示 Word 應用程序,是其他所有對象的父級。它的所有成員通常作爲一個整體應用於 Word。可以使用該對象的屬性和方法來控制 Word 環境。
Document 對象。Document 對象是 Word 編程的中樞。當您打開文檔或創建新文檔時,就創建了新的 Document 對象,該對象被添加到 Word 的 Documents 集合中。焦點所在的文檔叫做活動文檔,由 Application 對象的 ActiveDocument 屬性表示。
Selection 對象。Selection 對象表示當前選擇的區域,Selection 對象只存在一個。在 Word 用戶界面中執行某項操作(例如,對文本進行加粗)時,應首先選擇或突出顯示文本,然後應用格式設置。Selection 對象始終存在於文檔中。如果未選中任何對象,它表示插入點。此外,該對象還可以表示多個不連續的文本塊。
Range 對象。Range 對象表示文檔中的一個連續的區域,由一個起始字符位置和一個結束字符位置定義。Range 對象的數量並不侷限於一個。您可以在同一文檔中定義多個 Range 對象。
Bookmark 對象。Bookmark 對象與 Range 對象類似,它也表示文檔中的一個連續區域,並具有一個起始位置和一個結束位置。書籤用於在文檔中標記一個位置,或者用作文檔中的文本容器。Bookmark 對象可以小到只有一個插入點,也可以大到整篇文檔。您還可以在文檔中定義多個書籤。
對於Microsoft Office Word 2003,通常可以在..//Microsoft Office//OFFICE11// MSWORD.OLB獲得相關接口類。常用的有_Application, Documents, _Document, Selection, Range等。此外,用於設置字體的_Font,段落格式的_ParagraphFormat,表格對象Tables及Table,目錄對象TablesOfContents及TableOfContents等等也是常用的。

2  Word啓動與退出    
使用Application 對象,關聯接口、釋放接口。具體代碼如下:
_Application theExcelApp;
theExcelApp.CreateDispatch("word.application", NULL); //關聯接口
////退出
theExcelApp.Quit();  ////退出
theExcelApp.ReleaseDispatch();  //釋放接口

3   Word表格操作   
使用單文檔對象_Document,表格集合對象Tables,表格對象Table,行對象Rows,單元格對象Cell,列集合對象Columns,列對象Column,區域對象Range等可對錶格進行操作。
插入表格。使用_Document:: GetTables返回一個Tables對象,使用Tables::Add在指定區域插入一個表格。
獲取列對象。使用Table:: GetColumns返回一個Columns對象,使用Columns:: Item返回一個Column對象。從而可以列爲對象進行操作。
單元格插入文字。使用Table:: Cell返回Cell對象,使用Cell:: GetRange返回區域對象,或者使用Cell::Select使得表格獲得輸入焦點,從而進行編輯。

4  文字轉換爲表格   
當需要把一個記事本(*.txt)文件轉換爲表格插入到Word文檔中。最快捷的作法是將txt內容粘貼到word文檔中,然後將內容轉化爲表格。步驟如下:
首先確定一個插入txt內容的Range對象。
使用Range::InsertFile函數。InsertFile函數聲明爲:
   void Range::InsertFile(LPCTSTR FileName, VARIANT* Range, VARIANT* ConfirmConversions, VARIANT* Link, VARIANT* Attachment)
參數說明如下:
FileName 插入文本路徑。
Range 插入文本內容的Range對象,設爲NULL
ConfirmConversions 確認轉換,設爲FALSE
Link 鏈接到文件,設爲FALSE
Attachment 鏈接行爲,設爲FALSE
使用Range:: ConvertToTable轉換文字爲表格,返回一個Table對象。ConvertToTable函數聲明爲:
LPDISPATCH Range::ConvertToTable(VARIANT* Separator, VARIANT* NumRows, VARIANT* NumColumns, VARIANT* InitialColumnWidth, VARIANT* Format, VARIANT* ApplyBorders, VARIANT* ApplyShading, VARIANT* ApplyFont, VARIANT* ApplyColor, VARIANT* ApplyHeadingRows, VARIANT* ApplyLastRow, VARIANT* ApplyFirstColumn, VARIANT* ApplyLastColumn, VARIANT* AutoFit, VARIANT*, VARIANT* DefaultTableBehavior)
參數說明如下:
Separator 分隔符。通常設爲1,即設置製表符爲分隔符(如果採用其他分隔符,請適當修改)
NumRows 表格行數目
NumColumns 列數目
InitialColumnWidth,Format,ApplyBorders,ApplyShading,ApplyFont,ApplyColor,ApplyBorders,ApplyFirstColumn,ApplyLastColumn, DefaultTableBehavior,均可設爲VarOpt,由系統默認
AutoFit 自動調整。設爲0
也可利用Selection對象代替Range對象進行文本轉換表格,調用函數與Range對象的函數名稱一致,參數略有出入。

5 設置頁碼      
通常我們需要在任意指定頁開始插入新頁碼。網上很多文章都是只能在第二頁開始設置。以下介紹我通過觀察VBA宏代碼得到的一種插入頁碼的方法(實現方法當然可能不止一種,我曾在網上看到曾有一篇文章提及這個問題,但是他的代碼不能正常運行,估計是作者發佈文章的時候有些不小心有遺漏)。要點在於插入分節符和取消,並且要注意返回當前節。步驟如下:
0 在前一頁使用Selection::InsertBreak插入分節符,參數值爲2(參數值7爲分頁符)。
1 使用_Document::GetActiveWindow返回窗口Window對象。
2 使用Window:: GetActivePane返回當前活動Pane窗格對象
3 使用Pane::GetView返回View視圖對象,View::SetType(long(3))。
4 使用SetSeekView(long(10))獲得頁眉頁腳視圖。
5 使用Selection::GetHeaderFooter()獲得頁眉頁腳對象HeaderFooter。
6 使用HeaderFooter::SetLinkToPrevious(FALSE)取消“與上一節相同”。
7此時輸入較點Selction停留在上一節的頁腳處。使用View::SetSeekView(long(0))將返回到當前節的文字視圖中。
8 使用View::SetSeekView(long(10))再次獲得本節的頁眉頁腳視圖。
9 使用Selection::GetHeaderFooter()獲得頁眉頁腳對象HeaderFooter。
10 使用HeaderFooter::GetRange獲得Range對象rangeheadfoot。
11 使用Range:: GetFields獲得Fields對象。
12使用Fields:: Add獲得Field對象,具體參數賦值爲Add(rangeheadfoot,COleVariant(short(33)),varOpt,varOpt)。
13 使用Fields::GetPageNumbers()獲得PageNumbers頁碼對象。
14使用PageNumbers對象的方法設置屬性。特別要設置SetStartingNumber(long(1))。
PageNumbers對象的其他設置可參考如下:
SetNumberStyle(long(0));
 SetHeadingLevelForChapter(long(0));
 SetIncludeChapterNumber(FALSE);
 SetChapterPageSeparator(long(0));
 SetRestartNumberingAtSection(true);
15 通過Range對象rangeheadfoot設置頁碼居中及文字大小。
16 結束頁碼設置。使用View::SetSeekView(long(0))返回到文字視圖。

6 插入Excel圖表   
在Excel生成圖表後,Word可將其嵌入文檔中並改變其格式。用戶可以通過雙擊圖表對象激活,然後進行類似於Excel環境下的操作。具體操作如下:
使用Selection:: GetInlineShapes。獲得內嵌區域集合對象InlineShapes。
使用InlineShapes::AddOLEObject插入表格,並獲得內嵌區域對象InlineShape。AddOLEObject函數聲明爲:
LPDISPATCH AddOLEObject(VARIANT* ClassType, VARIANT* FileName, VARIANT* LinkToFile, VARIANT* DisplayAsIcon, VARIANT* IconFileName, VARIANT* IconIndex, VARIANT* IconLabel, VARIANT* Range)
參數說明如下:
ClassType 插入類型,若爲Excel對象,設爲COleVariant("Excel.Sheet.8")。
FileName 文件路徑。
LinkToFile 鏈接到文件。設爲FALSE。
DisplayAsIcon 顯示爲圖標,設爲FALSE。
IconFileName 文件名圖標,設爲VarOpt。
IconIndex 索引圖標,設爲VarOpt。
IconLabel 標籤圖標,設爲VarOpt。
Range 區域,設爲VarOpt。
使用InlineShape的方法SetHeight、SetWidth調整大小。這些方法的參數值都是打印格式下的英磅數值。

7 生成目錄    
單文檔對象_Document,目錄集合對象TablesOfContents,目錄對象TableOfContents及Range對象。操作流程如下:
使用_Document:: GetTablesOfContents返回TablesOfContents對象。
TablesOfContents::Add返回TableOfContents對象。
LPDISPATCH TablesOfContents::Add(LPDISPATCH Range, VARIANT* UseHeadingStyles, VARIANT* UpperHeadingLevel, VARIANT* LowerHeadingLevel, VARIANT* UseFields, VARIANT* TableID, VARIANT* RightAlignPageNumbers, VARIANT* IncludePageNumbers, VARIANT* AddedStyles, VARIANT* UseHyperlinks, VARIANT* HidePageNumbersInWeb, VARIANT* UseOutlineLevels)
參數說明如下:
Range 插入目錄的Range對象。通常目錄是文檔生成結束時進行插入的,因此必須事先指定插入目錄的區域Range對象。
UseHeadingStyles 使用製表符前導符,設爲TRUE
UpperHeadingLevel 頂級目錄,通常設爲1
LowerHeadingLevel 底級目錄,根據需要賦值
UseFields 使用區域,設爲FALSE
TableID 目錄索引,以1起始
RightAlignPageNumbers 頁碼右對齊,設爲TRUE
IncludePageNumbers 包含頁碼,
AddedStyles 增加類型,設爲NULL
UseHyperlinks 使用超鏈接,設爲TRUE
HidePageNumbersInWeb Web頁中隱藏頁碼,設爲TRUE
UseOutlineLevels 使用大綱級別,設爲TRUE
使用TableOfContents:: GetRange獲取區域對象,進行其他例如文字大小控制等操作。
TableOfContents:: UpdatePageNumbers更新頁碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章