vba - VBA 将段落和表格从一个 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
)? 我是否应该尝试这种方法,还是浪费时间?谢谢
解决方案
如果您正在循环段落,请检查该段落是否在表格中。就桌子而言,这将使您按顺序做事
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 文件格式,其中实际的底层内容可用。
推荐阅读
- excel - VBA 舍入小数
- windows - 你可以让powershell安装手动下载的Windows更新文件吗?无网络环境
- python - 更改多维列表中的值时的意外行为
- r - 根据位置减去常数值
- c# - 按索引设置 treeview.SelectedNode (List
) - .net-core - dotnet core 2.1 扩展方法不编译
- html - 背景图像和引导程序 3 的问题
- sql - 在 SQL Server 中查询子编号内的排序
- google-bigquery - 在 bigquery 中查询热门事物?
- aurelia - 编写一个大型的 Aurelia 应用程序 - 一个页面上的多个应用程序