Partager via


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 :

É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.