Office Space:撰寫 Microsoft Office 應用程式指令碼的秘訣

Office Space

歡迎蒞臨 Office Space 專欄,這裡提供處理 Microsoft® Office 應用程式指令碼的秘訣。每週二和週四我們將刊出新的秘訣,若要參閱以前討論過的秘訣,請造訪 Office Space Archive (Office Space 過往文件)。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

將文字附加至 Microsoft Word 文件

不久前我們刊出一篇 Office Space 專欄,說明如何將資料附加至 Microsoft Excel 試算表。結果讀者反應非常熱烈:

「請問要怎樣把文字附加至 Microsoft Word 文件?」

「您的文章讓我獲益匪淺,但我想知道怎樣把資料附加至 Word 文件結尾?」

「請問是否也能在 Word 文件執行類似的動作?」

「您好,我們並不相識,我是某某國前國防部長的遺孀,亡夫生前曾在某個秘密的銀行帳號存了五千萬美金。他的遺願是要我找出將文字附加至 Microsoft Word 文件的方法,拜託您幫忙了…」

看來有些讀者已經等不及了,很多人甚至恨不得可以追打出答案來,不用緊張,慢慢來。好,假設有一份像這樣的簡單 Word 文件:

Microsoft Word

我們需要一個可以打開這份文件並把資料附加至文件結尾的指令碼。世界上真的有這麼方便的指令碼嗎?沒錯,現在就有:

Const wdStory = 6
Const wdMove = 0

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Set objDoc = objWord.Documents.Open("c:\scripts\testdoc.doc")

Set objSelection = objWord.Selection
objSelection.EndKey wdStory, wdMove

objSelection.TypeParagraph()
objSelection.TypeParagraph()
objSelection.TypeText "This text was appended to an existing Word document."

出乎想像的簡單,對吧?這份程式碼開頭先定義兩個常數:wdStorywdMovewdStory 告訴 Word 應該把選取點移到何處 (您想的沒錯,數值 6 表示「把選取點移到文章末端」,套 Word 的說法就是移到「文件結尾」)。wdMove 則告訴指令碼執行移動的動作。換句話說,要閃動的小游標從文件開頭這個預設位置跳到文件結尾。另一種方法是定義一個叫做 wdExtend 的常數,並將值設為 1。這樣就能把選取範圍擴大到文章從頭到尾,也就是選取整篇文件。

我猜一定會有人問,難道只能移到文章末端嗎?其實您還可以將選取範圍移動 (或延伸) 至文件內其他地方,不一定只能跳到文件結尾。例如:

常數

wdSentence

3

wdParagraph

4

wdLine

5

wdStory

6

如需詳細資訊,請參閱 MSDN 上的 Microsoft Word VBA Language Reference (英文)。

好啦,言歸正傳。定義兩個常數後,我們可以建立 Word.Application 物件的執行個體,接著將 Visible 屬性設定為 True (這樣就能在畫面上看見所有的東西)。使用 Open 方法開啟 C:\Scripts\Testdoc.doc 檔案,然後建立 Selection 物件的執行個體。根據預設,這樣就能把選取點放在文件的最前頭。

剛才說過,我們要把選取點移動到文件結尾 (因為要附加的文件一定會附加在選取點所在的位置)。這時可以利用 EndKey 方法 (用途正如其名),模擬鍵盤上 END 鍵的動作 。這行程式碼可以把選取點搬到文件結尾:

objSelection.EndKey wdStory, wdMove

就像您看到的,我們傳遞兩個參數給 EndKey:wdStory (告訴指令碼把選取點移到文件結尾) 和 wdMove (指明我們要移動選取點,而不是延伸選取範圍)。呼叫 EndKey 方法後,閃動游標就會從文件前端跳到末端。

注意:如果想模擬 HOME 鍵的的動作,該怎麼做?我想您已經猜到了。沒錯,就是使用 HomeKey 方法。

接下來的程式碼只是要示範我們確實移到文件結尾。使用 TypeParagraph() 方法,在文件中加上兩個復位換行 (以便區隔新舊文字),然後使用這行程式碼把文字附加到檔案中:

objSelection.TypeText "This text was appended to an existing Word document."

這樣就大功告成。Word 文件就會像下面一樣,新的文字附加在舊文字的後頭:

Microsoft Word

討論到此結束。您已經學會怎麼將文字附加至 Microsoft Word 文件。我們終於可以好好休息了。

「還沒完呢,請問怎麼把新的投影片附加至 PowerPoint 簡報…?」