2 votes

Mise à jour de la table des matières dans Word

J'ai une macro pour mon document Word qui est censée mettre à jour tous les champs et toute la table des matières.

Sub UpdateFields()
    Dim oStory As Range
    For Each oStory In ActiveDocument.StoryRanges
        oStory.Fields.Update
        If oStory.StoryType <> wdMainTextStory Then
            While Not (oStory.NextStoryRange Is Nothing)
                Set oStory = oStory.NextStoryRange
                oStory.Fields.Update
            Wend
        End If
    Next oStory
    Set oStory = Nothing

    Dim TOC As TableOfContents
    For Each TOC In ActiveDocument.TablesOfContents
        TOC.Update
    Next
End Sub

Cependant, lorsqu'il est exécuté, j'obtiens cette erreur.

enter image description here
Erreur et ensuite déboguer ci-dessous
J'apprécierais toute aide pour résoudre ce problème.

3voto

joeschwa Points 2394

Le problème est causé par le fait de nommer le sous UpdateFields . Pour des raisons inconnues, ce nom est réservé dans Word VBA. Renommez le sub en un nom autorisé (par exemple, FieldUpdates ) et le code fonctionnera bien.

0voto

Variatus Points 5735

L'erreur signalée indique que la Table des matières spécifiée pour la mise à jour n'existe pas. Word produit des erreurs de ce type lorsqu'il utilise For ... Each pour accéder à certaines de ses collections. Le nombre de tables des matières dont Word a connaissance peut avoir changé pendant l'édition du document. Pour éviter cette erreur, évitez For ... Each énumérations. Utilisez plutôt un code comme le suivant.

Dim i As Integer

With ActiveDocument
    For i = 1 To .TablesOfContents.Count
        .TableOfContents(i).Update
    Next i
End With

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X