使用VBA提取word文档的段落号

Posted

技术标签:

【中文标题】使用VBA提取word文档的段落号【英文标题】:Extract paragraph number of word document using VBA 【发布时间】:2022-01-19 00:16:12 【问题描述】:

有人要求我帮助我在 Word 中获取评论的段落编号。注意,Word VBA 不是我的强项。进行了一些搜索后,我整理了一个提取 cmets 本身的示例,但不确定如何获取段落编号。

在下面的示例中,我想提取注释(作为单词注释插入)和相关的段落编号,即:

评论 1 - 1.1.1.1

评论 2 - 1.1.1.3

评论 3 - 1.1.2.1.1

下面的示例代码。我如何访问段落级别属性,到目前为止我的尝试都没有产生任何结果并且我在文档中找不到它。

Public Sub ExtractComments()

Dim oDoc As Document
Dim nCount As Long
Dim n As Long

Set oDoc = ActiveDocument
nCount = ActiveDocument.Comments.Count

'Get info from each comment from oDoc and insert in table
For n = 1 To nCount
Debug.Print (oDoc.Comments(n).Scope.Information(wdActiveEndPageNumber))
Debug.Print (oDoc.Comments(n).Scope.Information(wdFirstCharacterLineNumber))
Debug.Print (oDoc.Comments(n).Scope.ParagraphStyle)
Debug.Print (oDoc.Comments(n).Scope.Paragraphs(1).Range.ListFormat.ListString)
Next n

Set oDoc = Nothing
End Sub

【问题讨论】:

【参考方案1】:

像这样:

Sub GetParagraphNumberofComment()
    Dim n As Long
    
    For n = 1 To ActiveDocument.Comments.Count
        MsgBox ActiveDocument.Range(0, ActiveDocument.Comments(n).Scope.Paragraphs(1).Range.End).Paragraphs.Count
    Next n
End Sub

【讨论】:

谢谢,我刚刚编辑了上面的格式以帮助使其更清晰 - 问题是在评论之前找到最后一个段落标题。您的示例给了我评论的行号,而不是上面标题的段落号,如果这有意义的话? 那么一旦找到评论的段落号,难道不可以直接从索引中减去1得到上一个吗?也许我没有完全理解。 见:***.com/questions/69183801/…

以上是关于使用VBA提取word文档的段落号的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从 Word 2007 文档中提取宏 (VBA) 代码

OpenXML - 将书签应​​用于 Word 文档中的段落

选择非粗体文本并更改其颜色(选定段落的)- MS Word VBA 宏

用VBA直接在WORD中能正常运行的方法或属性相关常量设置,在EXCEL中处理WORD文档时都有哪些变化?

如何用VBA将EXCEL中的若干的数据导入不同的word文档

VBA批量提取word表格中的自我评分