编程VBA宏的妙处之一是该语言是面向对象的。这意味着您可以使用对象和对象集合访问文档的每个部分。换句话说,您可以操纵段落而无需选择它们。

例如,假设您想依次访问文档的每个段落,并对该段落中的文本进行一些处理。

由于每个段落都是文档中的不同对象,因此相对容易。所有段落对象都可以作为“段落”集合的一部分进行访问。以下代码可以解决问题:

iParCount = ActiveDocument.Paragraphs.Count For J = 1 To iParCount     sMyPar = ActiveDocument.Paragraphs(J).Range.Text     [Add processing comments to manipulate sMyPar]

ActiveDocument.Paragraphs(J).Range.Text = sMyPar Next J

代码的第一行将iParCount设置为等于当前文档中的段落数。从第二行开始的循环然后在宏中完成主要工作。第三行将sMyPar字符串设置为等于指定段落中的文本。 (当J等于1时,您正在使用第一段。当J等于2时,它是第二段-依此类推。)

完成sMyPar的处理后,下一行将文档文本设置为与sMyPar字符串中的修改后的文本相等。

但是,上面的代码确实需要花费很长时间才能运行。使用For Each循环访问Paragraphs集合会更快,如下所示:

For Each p In ActiveDocument.Paragraphs     sMyPar = p.Range.Text     [Add processing comments to manipulate sMyPar]

p.Range.Text = sMyPar Next p

如果仅在处理表明需要进行更改的情况下才更改段落,则可以使代码更快。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)此技巧(12177)适用于Microsoft Word 2007、2010、2013和2016。您可以在此处找到适用于Word的较早菜单界面的该技巧的版本: