等终军之弱冠什么句式:如何在一个 Word 文档中插入多个文件,并在各文件之间放置一个分页符?

来源:百度文库 编辑:中财网 时间:2024/04/26 16:14:35

如何在一个 Word 文档中插入多个文件,并在各文件之间放置一个分页符?

问:

您好,脚本专家!在 5 月 3 日那天,您为我们介绍了如何在 Microsoft Word 中合并多个文件。我愿意尝试一下,但希望在各文件之间放置一个分页符。

-- CE

答:

您好,CE。您知道,读取您的电子邮件时,我们的第一个想法就是:在 2005 年 5 月 3 日,我们没有介绍如何合并多个文件(英文)。这并不是因为我们认为该主题(将多个文件合并到一个 Microsoft Word 文档中)不像是我们在这期专栏中要解决的问题。相反,大部分时间我们没有做任何工作,我们不清楚为什么在 5 月 3 日那天却是个例外。不过,您说的没错:在 5 月 3 日 那天,我们实际上的确做了一些工作。我们刚才在想什么呢?

您应该还记得(当然您们都还记得每一个您好,脚本专家专栏),在最初的专栏中,我们使用一个脚本将文件夹 C:\Scripts\Archive 中的所有文件都导入到了一个 Microsoft Word 文档中。那样很好,不过我们只是在一个文件的末尾和下一个文件的起始处之间键入了一个段落标记。不用说,如果我们知道一个文件在哪儿结束,并且也知道下一个文件从哪儿开始,那么,段落标记也就没有多大用处了。您说对了,CE:毫无疑问,在各文件之间插入一个分页符是往正确方向迈出的第一步。下面的这段代码即可执行该操作:

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

对于该代码的大部分内容,我们只是复制了插入多个文件时所使用的脚本;因此,我们将不再对代码逐行加以详细介绍。(如果您需要了解该信息,请阅读原始专栏(英文)。)我们将重点介绍我们所做的两处更改。

首先,脚本开头定义了一个名为 wdPageBreak 的常量,并将其值设定为 7。当我们调用 InsertBreak 方法时,我们将通过该常量来告诉 Word 插入一个分页符。(您可能知道,Word 允许您插入其他类型的分隔符,包括分栏符、文字换行符以及多种类型的分节符。)

然后,我们将一组代码绑定到本地计算机的 WMI 服务上,创建一个新的 Microsoft Word 文档,并使用 Associators Of 查询来检索文件夹 C:\Scripts\Archive 中所有文件的集合。获得该集合后,我们即可建立一个 For Each 循环来遍历该集合,同时使用 InsertFile 方法来完成对每个文件的插入操作。

以下是新脚本不同于原始脚本的第二个不同之处。在原始脚本中,我们调用 InsertFile 方法,然后使用 TypeParagraph() 来模拟按下键盘上 ENTER 键的操作。这次,For Each 循环如下所示:

For Each objFile in FileListobjSelection.InsertFile(objFile.Name)objSelection.InsertBreak(wdPageBreak)Next

正如您所看到的,在插入第一个文件后,我们调用了 InsertBreak 方法,指定我们想插入一个分页符。只有在插入此分页符后,才能进入下一个循环并插入集合中的下一个文件。最终结果为:我们在导入到文档中的各文件之间均插入了一个分页符。

是的,好多了。看看,我们今天已经做了一些工作了,我们还可以再多做一些工作。下面的脚本是一个经过修改的脚本,该脚本不仅可在每个文件之间插入分页符,而且还可在每个分页符后键入文件路径,路径的格式为 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

注意:有关在 Word 文档中格式化文本的详细信息,请阅读每周刊登在 Office Space 专栏上的 Microsoft Word 文章。

您知道,这挺有趣。或许,仅仅为了改变一下以往的习惯,从今以后,我们将于每年的 5 月 3 日做一些工作。

好了…。