您好,腳本專(zhuān)家!在 5 月 3 日那天,您為我們介紹了如何在 Microsoft Word 中合并多個(gè)文件。我愿意嘗試一下,但希望在各文件之間放置一個(gè)分頁(yè)符。
-- CE
您好,CE。您知道,讀取您的電子郵件時(shí),我們的第一個(gè)想法就是:在 2005 年 5 月 3 日,我們沒(méi)有介紹如何合并多個(gè)文件(英文)。這并不是因為我們認為該主題(將多個(gè)文件合并到一個(gè) Microsoft Word 文檔中)不像是我們在這期專(zhuān)欄中要解決的問(wèn)題。相反,大部分時(shí)間我們沒(méi)有做任何工作,我們不清楚為什么在 5 月 3 日那天卻是個(gè)例外。不過(guò),您說(shuō)的沒(méi)錯:在 5 月 3 日 那天,我們實(shí)際上的確做了一些工作。我們剛才在想什么呢?
您應該還記得(當然您們都還記得每一個(gè)您好,腳本專(zhuān)家專(zhuān)欄),在最初的專(zhuān)欄中,我們使用一個(gè)腳本將文件夾 C:\Scripts\Archive 中的所有文件都導入到了一個(gè) Microsoft Word 文檔中。那樣很好,不過(guò)我們只是在一個(gè)文件的末尾和下一個(gè)文件的起始處之間鍵入了一個(gè)段落標記。不用說(shuō),如果我們知道一個(gè)文件在哪兒結束,并且也知道下一個(gè)文件從哪兒開(kāi)始,那么,段落標記也就沒(méi)有多大用處了。您說(shuō)對了,CE:毫無(wú)疑問(wèn),在各文件之間插入一個(gè)分頁(yè)符是往正確方向邁出的第一步。下面的這段代碼即可執行該操作:
Const wdPageBreak = 7strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set objWord = CreateObject("Word.Application")objWord.Visible = TrueSet objDoc = objWord.Documents.Add()Set objSelection = objWord.SelectionSet FileList = objWMIService.ExecQuery _("ASSOCIATORS OF {Win32_Directory.Name=‘C:\Scripts\Archive‘} Where " _& "ResultClass = CIM_DataFile")For Each objFile in FileListobjSelection.InsertFile(objFile.Name)objSelection.InsertBreak(wdPageBreak)Next對于該代碼的大部分內容,我們只是復制了插入多個(gè)文件時(shí)所使用的腳本;因此,我們將不再對代碼逐行加以詳細介紹。(如果您需要了解該信息,請閱讀原始專(zhuān)欄(英文)。)我們將重點(diǎn)介紹我們所做的兩處更改。
首先,腳本開(kāi)頭定義了一個(gè)名為 wdPageBreak 的常量,并將其值設定為 7。當我們調用 InsertBreak 方法時(shí),我們將通過(guò)該常量來(lái)告訴 Word 插入一個(gè)分頁(yè)符。(您可能知道,Word 允許您插入其他類(lèi)型的分隔符,包括分欄符、文字換行符以及多種類(lèi)型的分節符。)
然后,我們將一組代碼綁定到本地計算機的 WMI 服務(wù)上,創(chuàng )建一個(gè)新的 Microsoft Word 文檔,并使用 Associators Of 查詢(xún)來(lái)檢索文件夾 C:\Scripts\Archive 中所有文件的集合。獲得該集合后,我們即可建立一個(gè) For Each 循環(huán)來(lái)遍歷該集合,同時(shí)使用 InsertFile 方法來(lái)完成對每個(gè)文件的插入操作。
以下是新腳本不同于原始腳本的第二個(gè)不同之處。在原始腳本中,我們調用 InsertFile 方法,然后使用 TypeParagraph() 來(lái)模擬按下鍵盤(pán)上 ENTER 鍵的操作。這次,For Each 循環(huán)如下所示:
For Each objFile in FileListobjSelection.InsertFile(objFile.Name)objSelection.InsertBreak(wdPageBreak)Next
正如您所看到的,在插入第一個(gè)文件后,我們調用了 InsertBreak 方法,指定我們想插入一個(gè)分頁(yè)符。只有在插入此分頁(yè)符后,才能進(jìn)入下一個(gè)循環(huán)并插入集合中的下一個(gè)文件。最終結果為:我們在導入到文檔中的各文件之間均插入了一個(gè)分頁(yè)符。
是的,好多了??纯?,我們今天已經(jīng)做了一些工作了,我們還可以再多做一些工作。下面的腳本是一個(gè)經(jīng)過(guò)修改的腳本,該腳本不僅可在每個(gè)文件之間插入分頁(yè)符,而且還可在每個(gè)分頁(yè)符后鍵入文件路徑,路徑的格式為 14 磅 Arial 字體。(其余文本的格式為 10 磅 Arial 字體。)以下即為該附加的小腳本:
Const wdPageBreak = 7strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set objWord = CreateObject("Word.Application")objWord.Visible = TrueSet objDoc = objWord.Documents.Add()Set objSelection = objWord.SelectionSet FileList = objWMIService.ExecQuery _("ASSOCIATORS OF {Win32_Directory.Name=‘C:\Scripts\Archive‘} Where " _& "ResultClass = CIM_DataFile")objSelection.Font.Name = "Arial"For Each objFile in FileListobjSelection.Font.Size = "14"objSelection.TypeText objFile.NameobjSelection.TypeParagraph()objSelection.Font.Size = "10"objSelection.InsertFile(objFile.Name)objSelection.InsertBreak(wdPageBreak)Next| 注意:有關(guān)在 Word 文檔中格式化文本的詳細信息,請閱讀每周刊登在 Office Space 專(zhuān)欄上的 Microsoft Word 文章。 |
您知道,這挺有趣?;蛟S,僅僅為了改變一下以往的習慣,從今以后,我們將于每年的 5 月 3 日做一些工作。
好了…。
聯(lián)系客服