2010-07-02 6 views
1

Incertain du meilleur moyen de lier une liste déroulante Contenu Contrôlez correctement un fichier XML: tout ce que j'obtiens est le premier élément.Word 2007 VBA: ActiveDocument.CustomXMLParts et listes déroulantes

Je suppose que je vais devoir parcourir le document XML, compter le nombre d'éléments, puis appeler la méthode .Add sur le contrôle en conséquence, mais je ne suis pas sûr de savoir comment faire cela dans VBA.

Voici ce que j'ai:

Dim ap As Document 
Dim cnt As Integer 
Set ap = ActiveDocument 
cnt = ap.CustomXMLParts.Count + 1 

ap.CustomXMLParts.Add 
ap.CustomXMLParts(cnt).Load ("C:\test\Employees.xml") 

Dim strXPath1 As String 
strXPath1 = "/Employees/Employee/@name" 
ActiveDocument.ContentControls(1).XMLMapping.SetMapping strXPath1 

qui (comme prévu) obtient le premier attribut name; pas sûr la meilleure façon de remplir un contrôle de contenu déroulant à partir d'un document XML (voir document XML ci-dessous):

<?xml version="1.0"?> 
<Employees> 
    <Employee name="Joe Blow"> 
    <Email>[email protected]</Email> 
    <Extension>201</Extension> 
    </Employee> 
    <Employee name="Bob Smith"> 
    <Email>[email protected]</Email> 
    <Extension>202</Extension> 
    </Employee> 
</Employees> 

Répondre

1

listes déroulantes sont différents de tous les autres contrôles de contenu - vous aurez besoin d'utiliser un schéma pour eux: Walkthrough: Binding Content Controls to Custom XML Parts.

Vous voulez début avec le code comme ceci si:

Sub BindtoDropDown() 
    Dim ap As Document 
    Set ap = ActiveDocument 
    Dim cp As CustomXMLPart 
    Set cp = ap.CustomXMLParts.Add 
    cp.Load ("C:\Users\Me\Desktop\Employees.xml") 
    Dim strXPath1 As String 
    strXPath1 = "/Employees/Employee/@name" 
    Dim ddCC As ContentControl 
    Set ddCC = ap.ContentControls.Add(Type:=wdContentControlDropdownList) 
    ddCC.XMLMapping.SetMapping (strXPath1) 
End Sub 

Ceci définit simplement Joe Soufflez dans le menu déroulant, mais ne remplit pas le reste des entrées. Le lien ci-dessus vous dira comment faire cela.

Un autre élément intéressant à considérer lors du démarrage avec Content Controls et XML Mapping est le Word Content Control Toolkit. Il est disponible here.

+0

J'ai lu cet exemple plusieurs fois; il n'y a aucune mention de contrôles de contenu déroulant là-bas ... ok, ils mentionnent le mot "drop-down" une fois dans une phrase mais il n'y a pas d'exemples ou d'instructions. – gravyface

+0

Mes excuses, mauvais lien. Je l'ai corrigé ci-dessus et ai également fourni un autre lien. –