Пробую
Как именно и что именно?
нужен Алгоритм: цикл по всем таблицам в документе и их местоположения
Вы сами поняли что написали?
Мне кажется, что Вы даже не вдумались в представленный код. Этот алгоритм там уже реализован - есть цикл по каждой странице документа и по всем таблицам в ней. На основании этого получить и таблицу и где она находится и обратиться к ней - вообще не проблема.
Обратиться к каждой из таблиц в коде выше без проблем - у Вас есть переменная цикла otbl. Это уже объект таблица.
Узнать на какой странице? Это тоже уже реализовано - переменная lp это и есть номер страницы.
Нужно знать сколько их? Добавьте в цикл счетчик. Нужно знать сколько на странице - есть свойство Count.
если из несколько, то это не видно
кому не видно? Вставьте две таблицы в страницу - будет два MsgBox-а.
Вот чуть модифицированный код с комментариями - смотрите и поймете, что надо вникать глубже в примеры, чтобы получить результат самостоятельно:
Sub FindTables()
Dim otbl As Table, v
Dim lp As Long, ls As Long, le As Long, it_cnt As Long, rr As Range
le = 1
Do While le > ls
ActiveDocument.Range.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=lp + 1).Select
ls = Selection.Start
Selection.GoToNext(wdGoToPage).Select
le = Selection.Start
If le > ls Then
Set rr = ActiveDocument.Range(ls, le - 1)
Else
Set rr = ActiveDocument.Range(ls, Selection.GoTo(wdGoToBookmark, , , "\EndOfDoc").Start)
End If
DoEvents
If rr.Tables.Count > 0 Then
MsgBox "Всего таблиц на странице " & lp + 1 & ": " & rr.Tables.Count
For Each otbl In rr.Tables
'подсчет таблиц
it_cnt = it_cnt + 1
MsgBox "Найдена таблица №" & it_cnt & " на странице №" & lp + 1
Next
End If
lp = lp + 1
Loop
'выделяем любую таблицу в документе по индексу
Set otbl = ActiveDocument.Tables(1)
otbl.Select
End Sub
В общем что нужно в итоге и что именно не получается - мне лично непонятно.
Не вижу сильных сложностей, кроме той, что Вы совершенно не владеете VBA. А это проблема, если за такие коды сходу решили взяться. Начните с азов, иначе каждый код будет делать то, что Вам не видно