如何加粗整个 Microsoft Word 文档中的特定词?

来源:百度文库 编辑:神马文学网 时间:2024/04/28 20:07:02
问:
您好,脚本专家!如何加粗整个 Microsoft Word 文档中的特定词?
-- SB
答:
您好,SB。您可能会觉得这很难令人相信,但是,当您整天使用脚本和编写脚本时,就会感到有些疲惫了。您是说您有一个用于自动备份和清除所有计算机上的所有事件日志的脚本?太好了。您有一个用于监视文件夹并在添加新文件时通知您的脚本?嗨,往事不堪回首啊。您有一个可以起死回生的脚本?嗨,谁没有?
但出于某种原因,SB,您的问题还是引起了我们的兴趣。或许是因为我们始终在寻找使用 Microsoft Word 的脚本;实际上,用 Word 编写脚本挺有趣。或者,也许是因为这个请求存在一定的难度:尽管我们十分肯定我们能够编写用于加粗文档中特定词的脚本,但我们从来没有真正尝试过。再或者,也许是因为所有我们令其起死回生的人们一直都十分坚持让我们仔细检查他们的文档,并加粗特定词。您知道,类似于我还活着这样的短语。
哦,好了。无论出于何种原因,下面就是我们提供的脚本:
Const wdReplaceAll = 2Set objWord = CreateObject("Word.Application")objWord.Visible = TrueSet objDoc = objWord.Documents.Open("C:\Scripts\Test.doc")Set objSelection = objWord.SelectionobjSelection.Find.Text = "Fabrikam"objSelection.Find.Forward = TRUEobjSelection.Find.MatchWholeWord = TRUEobjSelection.Find.Replacement.Font.Bold = TrueobjSelection.Find.Execute ,,,,,,,,,,wdReplaceAll
正如您所看到的那样,这不仅是一个编写时令人充满乐趣的脚本,而且(作为一个附加的优点而言)还是一个易于编写的脚本。在定义了一个名为 wdReplaceAll 的常量(我们一会儿再来讨论这个常量)后,我们创建了 Word.Application 对象的一个实例,然后将 Visible 属性设置为 True;这便为我们提供了一个 Microsoft Word 实例,我们可以在屏幕上看到这个实例。我们使用 Open 方法打开文档 C:\Scripts\Test.doc,然后创建 Word Selection 对象(默认情况下,该对象将光标定位在文档的开头)的一个实例。
现在,我们准备开始操作。我们想要做的就是加粗 Fabrikam 一词的所有实例;因此,我们将 Find 对象的 Text 属性的值设置为“Fabrikam”(这就是我们要搜索的内容)。接下来,我们将 Forward 属性设置为 True;这可确保搜索将在文档的开头开始,并正好在文档的末尾结束。最后,我们将 MatchWholeWord 属性设置为 True;我们这样做的目的只是为了以防文档中碰巧存在类似于 FabrikamCorporation 这样的异常结构。如果将 MatchWholeWord 设置为 False,则含有字符串 Fabrikam 的任何实例都将被加粗。我们将会得到如下的结果:FabrikamCorporation。我们也许并不想要这个结果。
注意:是的,我们解释得确实有点过快了,不是吗?但是没关系:毕竟,我们有一篇Office Space 文章,其中更加详细地讨论了查找和替换文本的过程。
以上为我们提供了一种用于查找 Fabrikam 一词所有实例的机制。但是,在找到这些实例后,该如何加粗其中的每个实例呢?方法如下:
objSelection.Find.Replacement.Font.Bold = True
是的,就是这么简单。这里,我们使用了 Replacement 对象(Find 对象的一个子对象),同时指定 Font.Bold 属性应为 True。这就是我们必须要做的一切。如果我们想要取消加粗 Fabrikam 的各个实例,则将 Font.Bold 属性设置为 False。不用说,我们还可以指定新的替换文本、新的替换字体大小以及我们想要的所有东西。
看看我们为什么这么喜欢用 Microsoft Word 来编写脚本?
配置替换对象后,我们调用 Execute 方法来启动查找和替换操作:
objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll
不,我们可不是将手指停留在逗号键上不动了。不管怎样,这次不是这么回事儿。实际上,有大量可选参数可供 Execute 方法使用。就此脚本来说,我们并不关心那些参数。不过,因为必须按顺序指定参数,所以我们不能仅仅执行类似下面的操作:
objSelection.Find.Execute wdReplaceAll
那样会使常量 ReplaceAll(它告诉 Word 我们想要替换搜索文本的所有实例)成为传递给 Execute 方法的第一个参数,这将会导致脚本失败。因此,所有“空”参数都用逗号表示。不必担心:如果这对于您没有任何意义,请看一下Execute 方法的文档,您将会看到我们跳过的所有参数列表。
好的。这确实很有趣,不是吗?事实上,我们非常愿意留在这里,聊聊关于这个主题的更多内容,但是 Abe Lincoln 和 Genghis Khan 都出去喝冰茶去了。您要知道,编写一个可以起死回生的脚本实际上并不是像吹捧的那样...。