Como fazer uma atualização automática do Índice de Conteúdo?

5

Estou usando o Word 2007, mas salvando meus documentos em formatos .doc (em oposição a .docx) porque essa é a diretiva da empresa.

Eu tenho o ToC configurado, mas existe uma maneira de tê-lo atualizado automaticamente (no documento aberto, salvo ou não)? A ajuda do Word sugere que ela deve ser atualizada ao abrir o documento, mas isso não parece acontecer.

Alguma idéia?

    
por Dan 05.10.2009 / 18:40

2 respostas

3

Se houver uma marca de seleção na opção Ferramentas > Opções > Imprimir > Atualizar campos (no Word 2007, no botão Office > Opções do Word > Display > Campos de atualização antes de imprimir), em seguida, ir para Visualizar impressão e voltar atualizará Campos. Mas é tão fácil pressionar Ctrl + A e depois F9.

Se você está procurando algo que não precise de interação do usuário em tudo, então você precisa de uma macro.
Um exemplo de uma macro para atualizar todos os campos do tipo ToC é:

Sub TOCFieldUpdate()
' Written by Charles Kyle Kenyon 27 January 2005
' Field Updater - TOC fields
Dim oField As Field
On Error Resume Next
For Each oField In ActiveDocument.Fields
If oField.Type = wdFieldTOC Then
oField.Update
End If
If oField.Type = wdFieldTOA Then
oField.Update
End If
Next oField
End Sub

Se você deseja executar periodicamente a macro acima, aqui está outra macro para isso.
que atualizará o ToC a cada 5 minutos:

Public Sub ToCUpdate()
Call TOCFieldUpdate
DoEvents
Application.OnTime When:=Now + TimeValue("00:05:00"), name:="ToCUpdate"
End Sub

Você pode atribuir essa macro a um ícone ou a uma tecla de atalho. Eu não sugeriria que isso fosse executado automaticamente quando o documento fosse aberto, como você executaria contra as mais recentes proteções de segurança da Microsoft.

Nota: O acima não foi testado e, pior ainda, é minha primeira tentativa de escrever o VBA.

    
por 05.10.2009 / 19:12
0

Você precisará de uma macro para isso.

Você tem um exemplo dessa macro aqui , usado para atualizar o campo "Salvar data". Ele funcionará com todos os campos do documento, e um Table Of Content também é um campo, portanto, isso deve ser útil para você.

Se você não se preocupa com o campo "Salvar data" (e, portanto, com o truque para salvar o documento duas vezes para que o campo "Salvar data" seja realmente atualizado), é possível remover as seguintes linhas:

Dim bSaveDate As Boolean
bSaveDate = False

...

If oField.Type = wdFieldSaveDate Then
    bSaveDate = True
End If

...

If bSaveDate = True Then
    MsgBox "Save a second time to update a save date field"
End If
    
por 05.10.2009 / 18:56