I want to automatically extract data from tables of a Word document. I do this by iterating over all tables in VBA. I.e.
For Each tbl In wdDoc.Tables
Next
Is it possible to find the caption for a given table? i.e. the document has
“Table 3:” and then the table.
Note that not all the tables in the document have got a caption and therefore the table numbers in captions are different than the document table enumeration.
Any help is appreciated.
Unfortunately, table captions are not actually associated with their tables through the Word Object Model. When a table caption is created, it is just text placed in a separate Paragraph object.
So, the short answer is that no, there is no good way to find the caption for a given table.
I did write some code that may help you though. It basically iterates through all Paragraph objects in the document and looks for the “Caption” style (alternatively, you could look for text formatted “Table #:”, or whatever you’d like). If the very next Paragraph contains tables, it places the text of the caption into the first cell of the first table found.
Keep in mind that this is just an example of how you could tie together a caption with its table. With that said, it is not a very reliable method and I would not recommend using it unless you absolutely need to because table captions could presumably not have the caption styling, or there could be caption styling on something that isn’t a caption, etc.