在Word VBA中查找表标题

时间:2011-12-08 16:29:49

标签: vba ms-word

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

For Each tbl In wdDoc.Tables
Next

是否可以找到给定表格的标题?即文件有 “表3:”然后是表格。

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

感谢任何帮助。

1 个答案:

答案 0 :(得分: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

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