不确定将下拉列表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>
答案 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。