Word 2007 VBA: ActiveDocument.CustomXMLParts и раскрывающиеся списки - PullRequest
1 голос
/ 02 июля 2010

Неуверен в том, как правильно связать выпадающий список 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 (см. документ 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 Ответ

1 голос
/ 03 июля 2010

Выпадающие списки отличаются от всех других элементов управления контентом - вам потребуется схема для них: Пошаговое руководство. Привязка элементов управления контентом к пользовательским частям XML .

Вы захотите запустить с таким кодом:

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

Это просто устанавливает Джо Блоу в раскрывающемся списке, но не заполняет остальные записи. Ссылка выше расскажет вам, как это сделать.

Еще один замечательный элемент, который следует учитывать при запуске с Content Controls и XML Mapping, - это Word Content Control Toolkit. Это доступно здесь .

...