Liaison des contrôles à une ligne spécifique du magasin de données lors de l’insertion d’un bloc de construction
Un bloc de construction de document représente une partie de contenu prédéfinie telle qu’une page de garde, un en-tête, un pied de page ou une clause personnalisée dans un contrat. Les blocs de construction personnalisés facilitent la création rapide de documents Word professionnels.
Utilisez des contrôles de contenu dans des blocs de construction personnalisés qui ont été mappés au code XML qui contient des données. Le contenu de ces contrôles est alors automatiquement lié à la partie XML personnalisée appropriée (si elle existe) lorsque la partie est insérée. L'exemple suivant illustre une autre solution qui consiste à ajouter dynamiquement la partie XML personnalisée et les mappages XML lorsque la partie est insérée. Par exemple, pour construire une page de garde, vous pouvez placer un contrôle de contenu d’image qui affiche une image récupérée à partir d’un élément dans un objet CustomXMLPart attaché. De même, vous pouvez créer le nom du projet en utilisant un contrôle de contenu de texte mappé sur un élément dans un objet CustomXMLPart contenant ce nom.
Cela facilite la mise à jour de vos données. Pour mettre à jour l’un de ces éléments, vous pouvez écrire quelques lignes de code pour mettre à jour chaque document stocké sur le serveur qui utilise ce bloc de construction de page de garde. Par exemple, vous pouvez remplacer un ancien logo par un nouveau. Ou, si le titre du projet change, vous pouvez mettre à jour le texte dans l’élément XML que vous avez mappé au contrôle de contenu de texte contenant le nom du projet, mettant ainsi à jour automatiquement tous les documents stockés sur le serveur.
Les objets utilisés dans ces exemples sont les suivants :
CustomXMLPart (modèle d'objet principal de Microsoft Office)
CustomXMLParts (modèle d'objet principal de Microsoft Office)
Échantillon
Supposons que l'utilisateur a inséré votre bloc de construction de document personnalisé dans un document. Suite à cette action, vous voulez procéder à l'insertion et au mappage sur la partie XML personnalisée.
<?xml version="1.0" encoding="utf-8" ?>
<projects>
<project>
<title>Data-Driven Document Generation</title>
<manager>Frank Martinez</manager>
<customer>Northwind Traders</customer>
</project>
</projects>
L'exemple de code suivant charge le fichier XML précédent et mappe chaque contrôle de contenu sur le nœud XML approprié dans cette nouvelle partie XML personnalisée lors de l'ajout du bloc de construction de document appelé « Company Report » (Rapport d'entreprise).
Private Sub Document_BuildingBlockInsert(ByVal Range As Range, _
ByVal Name As String, ByVal Category As String, _
ByVal Type As String, ByVal Template As String)
Dim cc As ContentControl
Dim part As CustomXMLPart
If Name = "Company Report" Then
'add the custom XML
ActiveDocument.CustomXMLParts.Add
Set part = ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).Load("c:\myProjects.xml")
'map the controls
For Each cc In Range.ContentControls
cc.XMLMapping.SetMapping cc.XMLMapping.XPath, cc.XMLMapping.PrefixMappings, part
Next cc
End If
End Sub
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.