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

Office Space

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

在 Microsoft Word 文件加入圖片式項目符號

Scripting Guys 曾經立下神聖的誓言,給指令碼作者的資訊一定要實用,方便他們執行系統管理的任務。我們盡力守著這項承諾,畢竟 Scripting Guy 可不是隨便的工作。但是有時候我們遇到實在好玩的東西,即使對系統管理員不太實用,就是讓人忍不住多玩兩下。Scripting Guy 的神聖使命就暫時放一旁。

比如說 Microsoft Word 裡頭的項目清單就挺有趣的。知道如何透過程式設計建立項目清單對系統管理員是很實用的技巧,而且哪系統個管理員不需要準備報告,或在報告裡使用項目符號的?既然 Scripting Guys 已經發過誓,就有責任示範怎樣透過程式設計在 Microsoft Word 文件裡加上項目符號,而且我們已經在先前的 Office Space 專欄講解過。

若您依照先前專欄的介紹執行指令碼,會得出如下所示的項目清單:

Microsoft Word


是不錯,不過有點無聊,尤其是建立好幾百個以後看起來更沒創意。最終您一定會想:「真希望建立不一樣的項目清單。說不定可以用圖片!」

例如像這樣:

Microsoft Word


其實在 Microsoft Word 裡用圖片建立項目清單很簡單,只要打開 [項目符號及編號] 對話方塊,然後在 [項目符號] 索引標籤上按一下 [自訂],幾個步驟就可以完成。但如果您想用指令碼建立圖片式項目符號,恐怕就沒那麼簡單了吧?

對我們也太沒信心了吧?用指令碼建立圖片式項目符號?您只要開口就可以啦!


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

Set objSelection = objWord.Selection

objSelection.TypeText "Here is a bulleted list."
objSelection.TypeParagraph()
objSelection.TypeParagraph()

objSelection.TypeText "Item 1"
objSelection.TypeParagraph()
objSelection.TypeText "Item 2"
objSelection.TypeParagraph()
objSelection.TypeText "Item 3"
objSelection.TypeParagraph()
objSelection.TypeText "Item 4"
objSelection.TypeParagraph()
objSelection.TypeText "Item 5"
objSelection.TypeParagraph()
objSelection.TypeParagraph()
objSelection.TypeText "No longer in a bulleted list."

Set objRange = objDoc.Range(objDoc.Paragraphs(3).Range.Start, objDoc.Paragraphs(7).Range.End)
objSelection.InlineShapes.AddPictureBullet _
    "C:\Program Files\Microsoft Office\MEDIA\OFFICE11\BULLETS\BD21301_.GIF", objRange


這個指令碼乍看之下有點複雜,但其實大部分的內容不過是輸入文字,以便建立項目符號清單 (看看指令碼理所有的 TypeTextTypeParagraphs 您就會明白了。)我們先建立 Word.Application 物件的執行個體,然後將 Visible 屬性設為 True (這樣螢幕上就會顯示 Word),接著使用 Add 方法把新的空白文件加到 Documents 集合。這時我們已經有個文件,然後替 Word Selection 物件建立執行個體,接著輸入一串文字。

產生的 Word 文件看起來像這樣:

Microsoft Word


我同意您心中的想法,這比項目清單還要無趣。別急,這是因為我們還沒有講到化腐朽為神奇的那一段程式碼:


Set objRange = objDoc.Range(objDoc.Paragraphs(3).Range.Start, objDoc.Paragraphs(7).Range.End)
objSelection.InlineShapes.AddPictureBullet _
    "C:\Program Files\Microsoft Office\MEDIA\OFFICE11\BULLETS\BD21301_.GIF", objRange


好,這裡主要執行兩項工作。首先我們建立 Range 物件的執行個體,接著指定範圍從文件的第三段開始,第七段結束,這兩個參數的用途在此。第一個參數指定範圍的起點 (第三段):


objDoc.Paragraphs(3).Range.Start


第二個參數指定範圍的終點:


objDoc.Paragraphs(7).Range.End


這樣看就比較合理了,對吧?

剩下來的就是參考 InlineShapes 集合並呼叫 AddPictureBullet 方法:


objSelection.InlineShapes.AddPictureBullet _
    "C:\Program Files\Microsoft Office\MEDIA\OFFICE11\BULLETS\BD21301_.GIF", objRange


我們也傳兩個參數給 AddPictureBullet:一是用來當作項目符號的影像檔路徑 (C:\Program Files\Microsoft Office\MEDIA\OFFICE11\BULLETS\BD21301_.GIF),二是方才建立的範圍物件 (objRange) 的物件參考。剩下來的就交給 AddPictureBullet,把平板無趣幾個段落變成使用圖片的超酷項目符號。

剛才說過,這個程式碼可能不是頂實用,但誰說只能工作不能玩的?如果讀者能將這項技巧用於實用目的,那再好也不過了,但如果只是替報告增添一點趣味,有何不可?(嘿,Scripting Guys 說話實在,我們可是發誓要對讀者誠實的喲!)

顯示: