Roy
If you are doing a search for 'Table #' and the document is correctly created, there will be multiple instances that your macro might find, all of which will needed to be handled/ignored by your code.
Table Captions, when done correctly are composed of two parts. The text "Table " followed by a Seq field with the series name 'Table" such that the field code starts with {Seq Table ...}
Cross references to a table caption are usually a Ref field with the name of a bookmark so the field looks something like {Ref _Ref86060324 \h} where the _Ref# is automatically 'randomly' generated when you use the Insert Cross Reference dialog.
List of Tables is also another instance where you would expect to see lots of Table #'s appear but you most likely will ignore these completely.
The following code is pulling all instances into the workbook. You would probably want to expand on this code to exclude the hits you don't want.
Code:
Sub findRef()
Dim wdApp As Object, wdDoc As Object, aRng As Object, strFile As String
Dim aSheet As Worksheet, iRow As Integer
Set aSheet = ThisWorkbook.ActiveSheet
aSheet.Range("A1:D1") = Split("Doc,Page,Text,FieldCode", ",")
iRow = 1
With Application.FileDialog(msoFileDialogOpen)
If .Show = -1 Then
strFile = .SelectedItems(1)
End If
End With
If strFile = "" Then Exit Sub
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then Set wdApp = CreateObject("Word.Application")
wdApp.Visible = False
Set wdDoc = wdApp.Documents.Open(Filename:=strFile, AddToRecentFiles:=False, Visible:=False)
Set aRng = wdDoc.Range
With aRng.Find
.ClearFormatting
.Text = "Table?[0-9]{1,3}"
.MatchWildcards = True
.MatchCase = False
Do While .Execute ' Loop until Word can no longer find the search string
iRow = iRow + 1
aSheet.Range("A" & iRow) = strFile
aSheet.Range("B" & iRow) = aRng.Information(3) 'wdActiveEndPageNumber = 3
aSheet.Range("C" & iRow) = aRng.Text
aRng.MoveStart Unit:=1, Count:=-1 'wdCharacter = 1
aRng.MoveEnd Unit:=1, Count:=1
If aRng.Fields.Count > 0 Then
aSheet.Range("D" & iRow) = aRng.Fields(1).Code.Text
Else
aSheet.Range("D" & iRow) = "No field"
End If ''
aRng.Collapse Direction:=0 'wdCollapseEnd
Loop
End With
wdDoc.Close False
Set aRng = Nothing
Set wdDoc = Nothing
wdApp.Visible = True
wdApp.Quit
Set wdApp = Nothing
End Sub