O Microsoft Word não é muito bem o melhor leitor de textos do mundo. Como assim? Pois, ele é um excelente editor de textos, ou seja, para criar, editar, etc. Mas para ler, convenhamos, nem programas como o Adobe Reader suprem as necessidades que os eBook Readers trouxeram. Uma delas e muito bem vinda para documentos grandes é manter a página na qual se está navegando.
Por exemplo, você abre um documento de 200 páginas, vai lendo, pára a leitura na página 88 e fecha o documento porque tem que fazer outra coisa. Horas depois, ou mesmo dias, você volta o documento e, em qual página estava mesmo? Imagine isso em documentos maiores?
Pois bem, de posse dessa necessidade, o código VBA abaixo faz exatamente isso. Em miúdos, antes de fechar o documento, ele adicionará um Indicador do Word (Inserir->Indicador), que serve para isso mesmo, bem no local onde estiver o cursor naquele momento. Após fechar e salvar, o que é obrigatório para o funcionamento da rotina, ao abrir novamente o documento, ele posicionára o documento no indicador que foi adicionado e o removerá, deixando-o livre para a próxima vez em que o documento for fechado.
Para funcionar em no documento desejado, com ele aberto no Word, abra o VBA (Atl+F11), localize na janela de Projeto o documento atual, que estará como “Project (Nome do documento)”. Clique sobre este item com o botão direito e selecione Inserir->Módulo. Na janela em branco que aparecer, coloque o seguinte código:
Sub ReferenciaAtual()
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="ReferenciaAtual"
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
End Sub
Sub IrParaReferenciaAtual()
Selection.GoTo What:=wdGoToBookmark, Name:="ReferenciaAtual"
End Sub
Sub RemoverReferenciaAtual()
If ActiveDocument.Bookmarks.Exists("ReferenciaAtual") Then
ActiveDocument.Bookmarks("ReferenciaAtual").Delete
End If
End Sub |
Sub ReferenciaAtual()
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="ReferenciaAtual"
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
End Sub
Sub IrParaReferenciaAtual()
Selection.GoTo What:=wdGoToBookmark, Name:="ReferenciaAtual"
End Sub
Sub RemoverReferenciaAtual()
If ActiveDocument.Bookmarks.Exists("ReferenciaAtual") Then
ActiveDocument.Bookmarks("ReferenciaAtual").Delete
End If
End Sub
Volte a janela de Projeto e clique duas vezes em ThisDocument. Na janela que aparecer, que é o código referente ao objeto do documento atual, coloque o seguinte código:
Private Sub Document_Close()
Call ReferenciaAtual
End Sub
Private Sub Document_Open()
Call IrParaReferenciaAtual
Call RemoverReferenciaAtual
End Sub |
Private Sub Document_Close()
Call ReferenciaAtual
End Sub
Private Sub Document_Open()
Call IrParaReferenciaAtual
Call RemoverReferenciaAtual
End Sub
Agora salve o documento. Para que tudo funcione, é preciso sempre habilitar as macros. No caso do Word 2007, é preciso salvar o documento no formato .docm, que é um documento do Word habilitado para macros.
Seguindo os passos descritos acima, toda vez que abrir o documento, ele voltará para a última página em que estava antes de ser fechado.
Download da planilha de exemplo
http://www.tomasvasquez.com.br/downloads/Teste_Retorna_Ultima_Pagina.zip
Bom proveito!