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