Экран и скроллинг в MS Word

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
Аватара пользователя
AlexEL
Сообщения: 24
Зарегистрирован: 23 авг 2008, 06:44
Контактная информация:

Пару вопросов по работе с экраном в макросах MS Word:
1. Как узнать, какая область в данный момент отображается в активном окне? Нашел только функцию RangeFromPoint, но она работает со всем экраном, а не с видимой областью.
2. Как запомнить видимую область документа и точно ее восстановить на экране (например, после скроллинга)?. Мучил VerticalPercentScrolled, SmallScroll, ScrollIntoView, но точного восстановления не добился. Вот мое чудо:

Dim R As Range
Dim p1&, p2&, p3&, p4&, L&

Application.ScreenUpdating = False
' запоминаем
Set R = ActiveDocument.ActiveWindow.RangeFromPoint(0, 0)
ActiveDocument.ActiveWindow.GetPoint p1, p2, p3, p4, R
L = p2
' какой-то скроллинг
ActiveDocument.Characters.First.Select
' восстанавливаем
ActiveDocument.ActiveWindow.ScrollIntoView R, True
ActiveDocument.ActiveWindow.SmallScroll Up:=1
On Error Resume Next
ActiveDocument.ActiveWindow.GetPoint p1, p2, p3, p4, R
Do While p2 > L
If Err.Number <> 0 Then Exit Do
ActiveDocument.ActiveWindow.SmallScroll Down:=1
ActiveDocument.ActiveWindow.GetPoint p1, p2, p3, p4, R
Loop
Макросы под заказ и готовый пакет: http://methodichka.ru/
Ответить