Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA将段落和表格从一个Word文档复制和处理到另一个Word文档_Vba_Ms Word - Fatal编程技术网

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

VBA将段落和表格从一个Word文档复制和处理到另一个Word文档,vba,ms-word,Vba,Ms Word,我的场景是,我想复制和清理Word doc1中的一些内容,并将经过清理的内容(使用新指定的样式)存储在doc2中。我知道如何循环段落,识别我想要的段落,并将它们复制到doc2中,以及如何在那里指定新样式 我还可以遍历doc1.Tables集合并复制表 但是我不知道如何将doc1表放置在doc2中的适当位置。我希望使用这样的循环,保持段落和表格的相对位置一致: Foreach (object o in doc1) if (o.type = paragraph) then if

我的场景是,我想复制和清理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?如果是这样,对象测试代码是什么样子的?(
如果o.type是type.paration
)?我是否应该尝试这种方法,还是浪费时间?谢谢你

如果你在循环段落,请检查段落是否在表格中。就表格而言,这将让您按顺序做事

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文件格式,在该格式中可以获得实际的底层内容。

删除不需要的部分听起来简单得多。谢谢,这正是我需要知道的。我从未想过使用对象和检查类型。