Word 2007 VBA:ActiveDocument.CustomXMLParts和下拉列表

时间:2010-07-02 18:50:10

标签: xml ms-word word-vba

不确定将下拉列表Content Control正确绑定到XML文件的最佳方法:我得到的只是第一项。

我假设我必须遍历XML文档,计算项目数,然后相应地调用控件上的.Add方法,但我不确定如何在VBA中执行此操作

这就是我所拥有的:

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

哪个(如预期的那样)获得名字属性;只是不确定如何最好地从XML文档填充Content Control下拉列表(请参阅下面的XML文档):

<?xml version="1.0"?>
<Employees> 
   <Employee name="Joe Blow">
     <Email>jblow@example.com</Email>
     <Extension>201</Extension>
   </Employee>
   <Employee name="Bob Smith">
     <Email>bsmith@example.com</Email>
     <Extension>202</Extension>
   </Employee>
</Employees>

1 个答案:

答案 0 :(得分:1)

下拉列表与所有其他内容控件不同 - 您需要为它们使用架构:Walkthrough: Binding Content Controls to Custom XML Parts

你想要用这样的代码开始

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

这只是在下拉列表中设置Joe Blow,但不会填充其余条目。上面的链接将告诉您如何做到这一点。

在开始使用内容控件和XML映射时要考虑使用的另一个很棒的项目是Word内容控制工具包。它可用here