繁体   English   中英

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

[英]VBA to copy and process paragraphs and tables from one Word document to another

我的情况是,我想从 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 )? 我应该尝试这种方法,还是浪费时间? 谢谢

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

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 文件格式,其中实际的基础内容可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM