1. 引言
在日常的WPS文字二次開發中,經常會涉及到操作頁眉和頁腳的情況。如:添加、刪除、修改頁眉和頁腳中的文字、圖形和圖像等,
本文通過WPS文字提供的二次開發接口,以WPS為基礎,同時兼顧Word來介紹其中的用法。
注意:WPS雖然與Word非常相似,但也有自身的一些特點。
2. 簡介
設置頁眉和頁腳時,可能會涉及到與“頁面設置”和“域”的知識。影響到頁眉和頁腳的設置如下圖:
2.1. 節、頁面設置、頁碼域
節:通常以為文檔的下一個對象是節(即Application->Documents->Sections),頁眉和頁腳可以在不同的節中進行不同的設置。
頁面設置:
奇偶頁不同:此功能為方便設置類似於書籍的“頁眉和頁腳”,如字典。
首頁不同:此功能為方便設置首頁為封面而設置。(注:通常封面不顯示頁碼)
域:如果在頁眉和頁腳中插入了頁碼域(即,如果你做了如下的操作:插入、頁碼,這樣插入的頁碼就是一個域,與,在輸入page是一樣的域),則每頁的頁碼會根據當前所在頁而改變。
2.2. 讀取頁眉和頁腳的內容
下面以頁眉來介紹,頁腳只要將Headers改為Footers即可,其他知識完全一樣。
通常的方法是:
ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Range.Text
注:這裡的wpsHeaderFooterPrimary可以取得枚舉值及描述如下:
名稱 值 描述
wpsHeaderFooterEvenPages 3 返回偶數頁上的所有頁眉或頁腳
wpsHeaderFooterFirstPage 2 返回文檔或節中的第一個頁眉或頁腳
wpsHeaderFooterPrimary 1 返回文檔或節中除第一頁外所有頁上的頁眉或頁腳
針對“頁面設置”的不同,所以,對讀取頁眉中的內容細分如下:
2.2.1. 在頁面設置中勾選了“奇偶頁不同”
讀取偶數頁的內容:
ActiveDocument.Sections(1).Headers(wpsHeaderFooterEvenPages).Range.Text
讀取奇數頁的內容:
可以使用:
ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Range.Text
注意:
如果頁眉中設置了動態的內容,如第*頁(“*”代表是一個根據頁碼自動更新的數字),則讀出的內容:
這裡與Word的差異:
1. Word:是根據當前光標的位置而定(如:光標放在第2頁,則wdHeaderFooterEvenPages讀出的是第2頁的頁眉內容,如果在第4頁,則讀出的是第4頁的內容,如果光標在第3頁,則讀出什麼有時是2頁,有時是4頁,規律不細說)。
2. WPS:讀取的就是第一個匹配的頁眉(如:wpsHeaderFooterEvenPages讀的就是第2頁的內容;wpsHeaderFooterPrimary則是第1頁或者第3頁的內容)。
2.2.2. 在頁面設置中勾選了“首頁不同”
讀取第一頁的內容:
ActiveDocument.Sections(1).Headers(wpsHeaderFooterFirstPage).Range.Text
讀取除第一頁的內容:
ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Range.Text
2.3. 刪除、修改頁眉的內容
與上面同理,通常用(其他情況,請參考上面的方法):
ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Range.Text="KingSoft"
3. 操作頁眉中的圖形或圖像
3.1. 讀取頁眉中的圖形或圖像
讀取頁眉與頁腳中的所有圖形(不包含嵌入式圖片):
ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Shapes.Count
也可以用:wpsHeaderFooterFirstPage、wpsHeaderFooterEvenPages此處三個讀出的結果完全相同。
讀取在頁面設置中勾選了“首頁不同”中的頁眉中的圖形(不包含嵌入式圖片):
ActiveDocument.Sections(1).Headers(wpsHeaderFooterFirstPage).Range.ShapeRange.Count
其他的偶數頁等與其類似。
注意:
大多數情況應該使用.Range.ShapeRange.Count來操作圖形。
3.2. 添加一個圖形到頁眉中且左對齊
注意:
以下代碼僅供演示使用,不對可能存在的任何問題負任何責任。
要運行以下代碼,必須滿足兩個文件:
1. 假設有C:tempafter.gif文件;
2. 已經可以切換到頁眉與頁腳中一次,即已有頁眉與頁腳信息,即至少有一個回車符,如下圖(Word不需要這個條件)。
示例代碼1:'添加圖片到頁眉中的且左對齊
Sub AddPicturetoHeaderToLeft()
Dim myleft, mytop
myleft = ActiveDocument.Sections(1).PageSetup.LeftMargin
mytop = ActiveDocument.Sections(1).PageSetup.HeaderDistance
ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Shapes.Addpicture _
"C:tempafter.gif", Left:=myleft, Top:=mytop
End Sub
示例代碼2:'添加圖片到頁眉中的且右對齊
Sub AddPicturetoHeaderToRight()
Dim myleft, mytop
Dim tempshape As Shape
mytop = ActiveDocument.Sections(1).PageSetup.HeaderDistance
myleft = ActiveDocument.Sections(1).PageSetup.PageWidth - ActiveDocument.Sections(1).PageSetup.RightMargin
Set tempshape = ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Shapes.Addpicture _
("C:tempafter.gif", Left:=myleft, Top:=mytop)
tempshape.Left = tempshape.Left - tempshape.Width
End Sub
示例代碼3:'添加圖片到頁眉中的且右對齊
Sub AddPicturetoFooterToLeft()
Dim myleft, mytop
myleft = ActiveDocument.Sections(1).PageSetup.LeftMargin
mytop = ActiveDocument.Sections(1).PageSetup.PageHeight - ActiveDocument.Sections(1).PageSetup.BottomMargin
mytop = mytop + (ActiveDocument.Sections(1).PageSetup.BottomMargin - ActiveDocument.Sections(1).PageSetup.FooterDistance)
mytop = mytop - 11
ActiveDocument.Sections(1).Footers(wpsHeaderFooterPrimary).Shapes.Addpicture _
"C:tempafter.gif", Left:=myleft, Top:=mytop
End Sub
4. 注意事項
1. 如果通過“插入”、“頁碼”的形式插入了一個頁碼,則從“視圖”、“頁眉和頁腳”進入視圖時,光標默認會在頁碼的圖文框中,這個可能會影響到用戶通過API切換視圖來編輯頁眉與頁腳的情況。
2. 頁眉與頁腳(包括正文)中插入圖形時,ShapeRange的順序與Shapes的順序是不一樣的。
通常應該使用Shapes來取最後一個插入的圖形:
ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Shapes(ActiveDocument.Sections(1).Headers(wpsHeaderFooterPrimary).Shapes.Count).Select
5. 參考
更多的API操作,請參閱 WPS API 幫助文檔。
6. 適用范圍
適用於 WPS Office 2009(1705)以上版本