插入段落

前一节介绍了使用Paragraphs对象的Add方法在文档末尾或在指定段落前面添加段落的方法。如果希望在文档的任意位置插入段落,该怎么做呢?使用Range对象的InsertParagraph, InsertParagraphAfter或InsertParagraphBefore方法在指定字符序列处或字符序列的后面或前面插入段落。

下面打开文档test2.docx,在文档中定义一个字符序列,选择它。使用InsertParagraph方法插入段落。

code.vba
Sub Test()
  Dim doc As Document
  Set doc = Documents.Open("D:\test2.docx")
  Dim rng As Range
  Set rng = doc.Range(Start:=20, End:=40)
  rng.Font.Size = 20
  rng.Collapse wdCollapseStart
  rng.InsertParagraph
End Sub

效果如图4-2所示。可见,默认时,原字符序列内容被插入的新段落标记替换掉了。

Document Image

图4-2 插入段落

如果希望保留字符序列,需要用Collapse方法对字符序列进行折叠,确定折叠到字符序列起点处或终止处,从而确定新段落标记的插入点。关于Range对象的Collapse方法,请参见Range对象部分的介绍。

设置Collapse方法的Direction参数的值为constants.wdCollapseStart,保留字符序列并在字符序列起点处插入新段落。

使用Range对象的InsertParagraphAfter方法和InsertParagraphBefore方法可以实现跟使用Collapse方法相同的效果,保留字符序列并分别在字符序列终止处和起点处插入新段落。如使用下面的代码可以实现图4-2中的效果。

code.vba
Sub Test2()
  Dim doc As Document
  Set doc = Documents.Open("D:\test2.docx")
  Dim rng As Range
  Set rng = doc.Range(Start:=20, End:=40)
  rng.Font.Size = 20
  rng.InsertParagraphBefore   'After
End Sub