您好,PS。您知道,我们脚本专家已经决定不再喜欢 Microsoft Word 了。为什么?嗯,因为我们脚本专家喜欢寻找看来无法解决的问题的解决方案:每当我们找出看起来不可能解决的问题的解决方法时,人们就会摇着头说:“哇,那些脚本专家真了不起,难道不是吗?我曾打赌没有可以做成 X 的方法,然而他们却找到了。”
那么,为什么我们不再喜欢 Microsoft Word 了呢?嗯,很简单:在 Microsoft Word 中,从来没有必要寻找聪明的解决方法。而几乎您想要在 Microsoft Word 中编写脚本解决的每件事都可以用一种非常简单、非常直接的方式解决。是的,对您来说真的很棒,但对我们来说却真是差劲;毕竟,没有人会说:“哇,PS 想要转到 Word 文档中的特定行,而脚本专家使用 GoTo 方法实现了。他们一定是世界上最聪明的人了!”不用说,一个天才是不会使用 GoTo 方法转到 Word 文档的特定行的。
当然,从好的一面看,我们也不必把很多精力花在解答这个问题上了。(脚本专家总是在想要聪明地做某事和保持非常可恶的懒惰状态之间左右为难。)明确这一点后,下面这个脚本就可以打开 Word 文档 (C:/Scripts/Test.doc) 并立即将光标移动到第 31 行:
Const wdGoToLine = 3
Const wdGoToAbsolute = 1
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open("C:/Scripts/Test.doc",,TRUE)
Set objSelection = objWord.Selection
objSelection.GoTo wdGoToLine, wdGoToAbsolute, 31
首先,我们为此脚本定义一对常量:wdGoToLine(值为 3)和 wdGoToAbsolute(值为 1)。wdGoToLine 告诉脚本要转到何种对象;除了转到某一行外,我们还可以转到一个书签、一个段落、一个页面、一个字段或各种类型的其他位置。(对于一个完整列表,单击此处并寻找 wdGoToItem 枚举。)wdGoToAbsolute 告诉脚本转到一个特定行(我们稍后将告诉它是哪一行。)此外,我们也可以转到下一行、上一行、第一行、最后一行等。
接下来,我们创建 Word.Application 对象的一个实例,并将 Visible 属性设置为 True;这样,就获得了一个可以显示在屏幕上的 Microsoft Word 运行实例。我们使用 Open 方法打开文档 C:/Scripts/Test.doc,然后使用此代码行创建一个 Word Selection 对象的实例:
Set objSelection = objWord.Selection
默认情况下,Selection 对象(从而我们的光标)将显示在文档的最开头。那么,我们怎样将光标移动到,比如,第 31 行呢?操作步骤如下:
objSelection.GoTo wdGoToLine, wdGoToAbsolute, 31
正如您所看到的,我们所做的就是调用跟有两个常量以及我们想要转到的行号的 GoTo 方法。就是这样,这就是该脚本所执行的所有操作。
您知道,尽管仍然很多,但毕竟我们确实必须查找 wdGoToLine 和 wdGoToAbsolute 的值。而且,我们确实必须将该脚本键入记事本中。那仍然非常了不起,您不这么认为吗?
嗯,我们说:“那仍然非常了不起,您不这么认为吗?”
明白了吗?这就是我们不再喜欢 Microsoft Word 的原因!