VBA – Retornando a última posição lida no documento do Word | Tomás Vásquez – Blog
Microsoft Office, VBA, Word
Tuesday August 3rd, 2010 Tomás Vásquez
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()
.Add Range:=Selection.Range, Name:="ReferenciaAtual"
Sub IrParaReferenciaAtual()
Selection.GoTo What:=wdGoToBookmark, Name:="ReferenciaAtual"
Sub RemoverReferenciaAtual()
If ActiveDocument.Bookmarks.Exists("ReferenciaAtual") Then
ActiveDocument.Bookmarks("ReferenciaAtual").Delete
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:
Call ReferenciaAtual
Call IrParaReferenciaAtual
Call RemoverReferenciaAtual
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.
http://www.tomasvasquez.com.br/downloads/Teste_Retorna_Ultima_Pagina.zip
DocumentoPosiçãoVBAWord
Previous PostVBA – Aumente a segurança de seus projetos VBANext PostDicas – 5 dicas estupidamente boas no Excel