1

Я хотел бы вернуться к моей предыдущей точке редактирования со вертикально расположенной страницей, идентичной ее исходному вертикальному положению. Техника Shift+F5 возвращает меня к предыдущей точке редактирования, но страница, к которой я возвращаюсь, расположена вертикально на экране несколько случайным образом. Другими словами, если мой курсор находится в 300 вертикальных пикселях от вершины области просмотра документа, я хотел бы повторно открыть свою страницу так, чтобы местоположение курсора было все еще в 300 вертикальных пикселях от вершины моей области просмотра.

Следующее может быть использовано для определения вертикальной позиции (на экране) моего текстового курсора:

ActiveWindow.GetPoint pLeft, pTop, pWidth, pHeight, Selection.Спектр

Таким образом, задача состоит в том, как прокрутить мой документ таким образом, чтобы вернуть мой текстовый курсор в исходное вертикальное положение (pHeight)?

Нет соответствующего ActiveWindow.SetPoint и ActiveWindow.ScrollIntoView прокручивает диапазон выбора в поле зрения, но не дает контроля над вертикальным положением диапазона выбора на экране.

1 ответ1

1

Вы можете сделать это с помощью этих двух макросов. Один для сохранения текущих настроек просмотра, а другой для их восстановления. Больше справки по коду доступно здесь и здесь

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

Сохранить вид

Sub StoreDocView()

   ' Declare variables
   Dim OriginalViewType As Long
   Dim OriginalHorizontalScrollPercent as Long
   Dim OriginalVerticalScrollPercent as Long
   Dim OriginalSelectionStart as Long
   Dim OriginalSelectionEnd as Long

   ' Capture the current settings
   OriginalViewType = ActiveWindow.ActivePane.View.Type
   OriginalHorizontalScrollPercent = ActiveWindow.ActivePane.HorizontalPercentScrolled
   OriginalVerticalScrollPercent = ActiveWindow.ActivePane.VerticalPercentScrolled
   OriginalSelectionStart = ActiveWindow.ActivePane.Selection.Start
   OriginalSelectionEnd = ActiveWindow.ActivePane.Selection.End


   ' Store the view information to a Document Variable
   ActiveDocument.Variables.Add Name:="DocViewType", Value:=OriginalViewType
   ActiveDocument.Variables.Add Name:="DocHorizontalScroll", Value:=OriginalHorizontalScrollPercent
   ActiveDocument.Variables.Add Name:="DocVerticalScroll", Value:=OriginalVerticalScrollPercent
   ActiveDocument.Variables.Add Name:="DocSelectionStart", Value:=OriginalSelectionStart
   ActiveDocument.Variables.Add Name:="DocSelectionEnd", Value:=OriginalSelectionEnd

End Sub

Получить вид

Sub GetDocView()

   ' Declare variables
   Dim OriginalViewType As Long
   Dim OriginalHorizontalScrollPercent as Long
   Dim OriginalVerticalScrollPercent as Long
   Dim OriginalSelectionStart as Long
   Dim OriginalSelectionEnd as Long

   ' Get document variables
   OriginalViewType = ActiveDocument.Variables("DocViewType").Value
   OriginalHorizontalScrollPercent = ActiveDocument.Variables("DocHorizontalScroll").Value
   OriginalVerticalScrollPercent = ActiveDocument.Variables("DocVerticalScroll").Value
   OriginalSelectionStart = ActiveDocument.Variables("DocSelectionStart").Value
   OriginalSelectionEnd = ActiveDocument.Variables("DocSelectionEnd").Value

   ' Restore settings
   ActiveWindow.ActivePane.View.Type = OriginalViewType
   ActiveWindow.ActivePane.HorizontalPercentScrolled = OriginalHorizontalScrollPercent
   ActiveWindow.ActivePane.VerticalPercentScrolled = OriginalVerticalScrollPercent
   ActiveWindow.ActivePane.Selection.Start = OriginalSelectionStart
   ActiveWindow.ActivePane.Selection.End = OriginalSelectionEnd


End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .