Explications :
lorsque on essaie d'insérer par macro dans un document Word 2007 un bloc de construction (page de garde, table des matières, Header, Footer, etc.) le fameux message d'erreur 5941 "le membre de la collection requis n'existe pas" risque de survenir si l'on ne prend pas la précaution de charger la bibliothèque des blocs de construction word qui se trouve dans le document "Building Blocks.dotx"...
ce document se trouve dans le dossier :
"C:\documents and settings\
[userid]\application data\microsoft\document building blocks\[code pays]\Building Blocks.dotx"
et il faut tenir compte du fait qu'il n'est pas attaché au document word systématiquement, il l'est seulement lorsque l'on ouvre manuellement le menu word du ruban "insertion/QuicPart"...
par macro il faut le charger comme le fait la procédure TestBuildingBlocks() ci-dessous :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Sub TestBuildingBlocks()
Dim docModele As Template
Templates.LoadBuildingBlocks ' chargement du template building blocks
' recherche du bon template
For Each docModele In Templates
If docModele.Name = "Building Blocks.dotx" Then
' si trouvé insertion du bloc table des matières
Templates(docModele.FullName).BuildingBlockEntries("Table automatique 1"). _
Insert Where:=Selection.Range, RichText:=True
Exit For
End If
Next
End Sub |
pour être complet, le :
Insert Where:=Selection.Range
suppose que l'on se trouve dans le document word à l'endroit précis à insérer le bloc de construction... à noter dans le code plus haut la différence entre "Name" (nom simple de fichier "toto.doc") et "Fullname" (chemin complet C:\documents and settings\[userid]\application data\...)
enfin, le code plus haut suppose que l'on n'ait qu'un seul fichier modèle "Building Blocks.dotx" dans tous les répertoires de template... sinon seul le premier trouvé sera utilisé par la macro...
voilà, j'espère avoir été assez clair et bonne programmation !!
zigo34
Partager