Пару вопросов по работе с экраном в макросах 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
Экран и скроллинг в MS Word
Модераторы: Naeel Maqsudov, C_O_D_E
Макросы под заказ и готовый пакет: http://methodichka.ru/