Выбрать таблицу на просматриваемой в данный момент странице (не выбранной в данный момент) - PullRequest
0 голосов
/ 25 мая 2018

Я установил несколько пользовательских кнопок в Word, которые заполняют таблицы в шаблоне.Вот пример того, что я использую для перебора ячеек второй таблицы:

ActiveDocument.Tables(2).Cell(i, j).Range

Сначала это работало хорошо для меня, потому что в каждом шаблоне всегда была одна страница.Это больше не так;теперь необходимо, чтобы эта программа работала в зависимости от того, какая страница просматривается в данный момент.Менее желательно, чтобы пользователь мог щелкнуть по интересующей странице и переключить код, чтобы использовать что-то вроде этого:

ActiveDocument.Bookmarks("\page").Range.Tables(2).Select

Word отображает номер страницы, просматриваемой в данный момент, в левой части окна.статус бар.Пример: «Страница 3 из 7».Поэтому, если бы пользователь нажимал мою пользовательскую кнопку во время просмотра страницы 3, я бы хотел, чтобы программа заполняла таблицу на странице 3, а не там, где в данный момент находится точка вставки.

Есть ли способ ссылкиобъект (например, таблица) на просматриваемой в данный момент странице в VBA?

Некоторые кодировщики кажутся совершенно непреклонными в том, что этого не может быть достигнуто, но я хотел бы проконсультироваться с вами, ребята, прежде чем приступить кметод точки вставки.

Заключительные примечания: количество страниц на странице не одинаковое, содержимое / макеты каждой таблицы могут различаться, и таблицы не пересекают границы страниц.

Спасибо.

1 Ответ

0 голосов
/ 25 мая 2018
Sub test()
Dim r As Range
Dim t As Table
Set r = ActiveWindow.RangeFromPoint(740, 250)
Dim p As Long
p = r.Information(wdActiveEndPageNumber)
For Each t In ActiveDocument.Tables
    If t.Cell(1, 1).Range.Information(wdActiveEndPageNumber) = p Then

        t.Cell(1, 1).Shading.BackgroundPatternColorIndex = wdBrightGreen
        Exit For
    End If
Next t

End Sub

Это закрасит первую ячейку первой таблицы, видимую на экране, независимо от того, где находится курсор.Возможно, вам придется поиграть с координатами x, y rangefrom для соответствия вашему разрешению экрана

...