Reabra o documento do Word na posição anterior do cursor com a posição vertical da página idêntica

1

Gostaria de voltar ao meu ponto de edição anterior com a página verticalmente posicionada, idêntica à sua posição vertical original. A técnica Shift + F5 me retorna ao ponto anterior de edição, mas a página para a qual eu volto é posicionada verticalmente na tela de uma maneira aleatória. Em outras palavras, se meu cursor tiver 300 pixels verticais na parte superior da janela de visualização do documento, eu gostaria de reabrir minha página para que a localização do cursor ainda seja 300 pixels verticais a partir da parte superior da minha viewport.

O seguinte pode ser usado para determinar a posição vertical (na tela) do meu cursor de texto:

ActiveWindow.GetPoint pLeft, pTop, pWidth, pHeight, Selection.Range

Então o desafio é como rolar meu documento de tal maneira a retornar meu cursor de texto para sua posição vertical original (pHeight)?

Não há ActiveWindow.SetPoint correspondente e ActiveWindow.ScrollIntoView rola um intervalo de seleção para exibição, mas não oferece controle sobre a posição vertical do intervalo de seleção na tela.

    
por Malcolm 30.03.2012 / 00:09

1 resposta

1

Você pode conseguir isso com essas duas macros. Um para armazenar as configurações atuais da vista e outra para restaurá-las. Mais ajuda de código está disponível aqui e aqui

edit : atualizei o código para armazenar as porcentagens de rolagem horizontal e vertical e o ponto de seleção atual além do tipo de visualização. Atualmente, não tenho uma cópia do Word para testar isso.

Armazenar a exibição

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

Recuperar a exibição

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
    
por 30.03.2012 / 16:58