在Word VBA中查找表标题

Adr*_*aan 4 vba ms-word

我想自动从Word文档的表中提取数据.我通过迭代VBA中的所有表来完成此操作.即

For Each tbl In wdDoc.Tables
Next
Run Code Online (Sandbox Code Playgroud)

是否可以找到给定表格的标题?即文件有"表3:",然后是表格.

请注意,并非文档中的所有表都有标题,因此标题中的表编号与文档表枚举不同.

任何帮助表示赞赏.

Dre*_*nor 6

遗憾的是,表格标题实际上并未通过Word对象模型与其表格相关联.创建表格标题时,只是文本放在单独的段落对象中.

所以,简短的回答是,不,没有好的方法来找到给定表的标题.

我写了一些可能对你有用的代码.它基本上遍历文档中的所有Paragraph对象,并查找"Caption"样式(或者,您可以查找格式为"Table#:"的文本,或者您想要的任何内容).如果下一个段落包含表格,它会将标题的文本放入找到的第一个表格的第一个单元格中.

    Dim p As Paragraph
    Dim lastParagraphWasCaption As Boolean
    Dim lastCaptionText As String
    lastParagraphWasCaption = False

    For Each p In ActiveDocument.Paragraphs
        If lastParagraphWasCaption And p.Range.Tables.Count > 0 Then
            p.Range.Tables(1).Cell(1, 1).Range.Text = lastCaptionText
        End If

        If p.Range.Style = "Caption" Then
            lastParagraphWasCaption = True
            lastCaptionText = p.Range.Text
        Else
            lastParagraphWasCaption = False
        End If
    Next
Run Code Online (Sandbox Code Playgroud)

请记住,这只是一个如何将标题与其表格绑定在一起的示例.话虽如此,它不是一个非常可靠的方法,我不建议使用它,除非你绝对需要,因为表格标题可能没有标题样式,或者可能有标题样式的东西不是标题,等.