将段落集合写入新文档

时间:2016-09-20 13:58:47

标签: vba ms-word ms-office word-vba

我需要编写一个函数 SaveFileWithParagraphs ,它接受路径,文件名和段落集合(从不同的单词文档中提取),然后简单地将这些段落写入新文档中。相同的风格等。

到目前为止我所拥有的:

Sub SaveFileWithParagraphs(path As String, name As String, paras As Collection)
  Dim wrdApp As Word.Application
  Dim wrdDoc As Word.Document
  Dim i As Integer
  Set wrdApp = CreateObject("Word.Application")
  wrdApp.Visible = True
  Set wrdDoc = wrdApp.Documents.Add

  With wrdDoc
    For Each p In paras            
        .Content.InsertAfter p.Range.Text
     Next
    .SaveAs (path + "\" + name)
    .Close ' close the document
  End With
wrdApp.Quit ' close the Word application
End Sub

这个问题是我松开了段落的样式,因为它只复制纯文本。关于如何解决这个问题的任何想法?

修改

感谢Cominterns回答我得到了这个:

' ...
With wrdDoc
   For Each p In paras
           p.Range.Copy
           Selection.EndKey Unit:=wdStory
           .Content.Paste
   Next
End With
' ...

复制我的段落保留所有样式。只剩下一个小问题:每当复制一个新段落时,它都会覆盖以前复制的段落,这样最后只有最后一段保留在文档中。这似乎是一个容易解决的问题,但我无法让它发挥作用。任何进一步的帮助非常感谢。 :)

1 个答案:

答案 0 :(得分:1)

p.Range.Text就是那个 - 文本。如果要保留格式,可以复制范围然后粘贴:

Dim target As Range
With wrdDoc
    For Each p In paras
        p.Range.Copy
        Set target = .Range
        target.Collapse wdCollapseEnd
        target.PasteAndFormat wdFormatOriginalFormatting
    Next
    .SaveAs (path + "\" + name)
    .Close ' close the document
End With