gpt4 book ai didi

vba - 区分 Word 文档中的目录

转载 作者:行者123 更新时间:2023-12-04 20:21:00 31 4
gpt4 key购买 nike

有谁知道当以编程方式遍历 Word 文档时,您可以判断一个段落是否构成目录的一部分(或者实际上,构成字段一部分的任何其他内容)。

我提出这个问题的原因是我有一个 VB 程序,它应该从文档中提取前几段实质性文本——它是通过遍历 Word.Paragraphs 集合来实现的。我不希望结果包含目录或其他字段,我只想要人们可以识别为标题、标题或普通文本段落的内容。然而事实证明,如果有一个目录,那么不仅目录本身而且目录中的每一行在 Word.Paragraphs 中都显示为一个单独的项目。我不想要这些,但无法在 Paragraph 对象上找到任何允许我区分并忽略它们的属性(我猜我也需要将解决方案应用于其他字段类型,例如 table of数字和权威表,我还没有真正遇到过,但我想可能会导致同样的问题)

最佳答案

由于 Word 对象模型的限制,我认为实现此目的的最佳方法是暂时删除 TOC 域代码,遍历 Word 文档,然后重新插入 TOC。在 VBA 中,它看起来像这样:

Dim doc As Document
Dim fld As Field
Dim rng As Range

Set doc = ActiveDocument

For Each fld In doc.Fields
If fld.Type = wdFieldTOC Then
fld.Select
Selection.Collapse
Set rng = Selection.Range 'capture place to re-insert TOC later
fld.Cut
End If
Next

遍历代码以提取段落,然后
Selection.Range = rng
Selection.Paste

如果您在 .NET 中编码,这应该非常接近。此外,这应该适用于 Word 2003 及更早版本,但对于 Word 2007/2010,根据创建方式,TOC 有时会在其周围有一个类似内容控件的区域,这可能需要您编写额外的检测和删除代码.

关于vba - 区分 Word 文档中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622641/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com