VBA将段落和表格从一个Word文档复制和处理到另一个

时间:2020-03-17 23:27:46

标签: vba ms-word

我的情况是,我想从Word doc1中复制和清除一些内容,并将经过清理的内容(具有新分配的样式)存储在doc2中。我知道如何遍历段落,识别所需段落并将其复制到doc2中以及如何在其中分配新样式。

我还可以遍历doc1.Tables集合并复制表。

但是我不知道如何将doc1表放置在doc2中的适当位置。我很想使用这样的循环,使段落和表格的相对位置保持一致:

Foreach (object o in doc1) 
   if (o.type = paragraph) then
      if (I like the paragraph) then
         copy the paragraph to doc2
      endif
   else if (o.type = table) then
      if (I like the table for copying) then
         copy the table to doc2
      end if
   endif
next

但是我不知道这种循环样式(在对象上循环)在VBA中是否可行或合理。我找不到任何示例。任何其他方法都需要某种方式将表格与文档中段落序列中的某些位置,书签,范围或文本相关联。但是由于我目前仅复制doc1文本的一部分,因此我无法轻松地复制锚定到的表。

我几乎要复制doc1的“全部内容”到doc2,然后就地删除不需要的部分并重新格式化需要的部分。

是否可以使用上面显示的循环类型将内容(段落,表格,图像等)从doc1依次复制到doc2?如果是这样,那么对象测试代码是什么样的? (if o.type is type.paragraph)?我是否应该尝试这种方法,还是浪费时间?谢谢

1 个答案:

答案 0 :(得分:0)

如果要循环播放段落,请检查该段落是否在表格中。就表而言,这将使您有条不紊地做事

Foreach (object o in doc1) 
   if (o.type = paragraph) then
      if (paragraph.Range.Information(wdWithinTable) Then
         do something with the entire table
      elseif (I like the paragraph) then
         copy the paragraph to doc2
      endif
next

但是,请注意,实际上没有可靠的方法可以使用对象模型处理所有可能的 Word对象。最特别的是,用文本换行(而不是嵌入式)格式化的图形对象非常复杂。

按照“事物”的顺序处理文档内容的一种更可靠的方法是利用Word Open XML文件格式,在该文件中可以使用实际的基础内容。