VBA – Retornando a última posição lida no documento do Word

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

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

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!

Comentários

comentários