我想自动从Word文档的表中提取数据。我通过迭代VBA中的所有表来完成此操作。即。
For Each tbl In wdDoc.Tables
Next
是否可以找到给定表格的标题?即文件有 “表3:”然后是表格。
请注意,并非文档中的所有表都有标题,因此标题中的表格编号与文档表枚举不同。
感谢任何帮助。
答案 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
请记住,这只是一个如何将标题与其表格绑定在一起的示例。话虽如此,它不是一个非常可靠的方法,并且我不建议使用它,除非你绝对需要因为表格标题可能没有标题样式,或者可能有标题样式的东西不是标题等等。