Привязка элементов управления к определенной строке в хранилище данных при вставке стандартного блока
Стандартный блок документа — это готовый фрагмент содержимого, например титульная страница, верхний колонтитул, нижний колонтитул или пользовательское встроенное предложение в контракте. Пользовательские стандартные блоки упрощают быстрое создание профессиональных документов Word.
Используйте элементы управления содержимым в пользовательских стандартных блоках, сопоставленных с XML- данными. Затем содержимое этих элементов управления содержимым автоматически связывается с соответствующей настраиваемой XML-частью (если она присутствует) при вставке части. Кроме того, как показано в следующем примере, можно динамически добавить настраиваемую XML-часть и сопоставления XML при вставке части. Например, чтобы создать титульную страницу, можно разместить элемент управления содержимым рисунка, который отображает изображение, полученное из элемента, во присоединенном объекте CustomXMLPart . Аналогичным образом можно создать имя проекта с помощью элемента управления текстовым содержимым, сопоставленного с элементом в объекте CustomXMLPart , содержащим имя проекта.
Это упрощает обновление данных. Чтобы обновить один из этих элементов, можно написать несколько строк кода, чтобы обновить каждый документ, хранящийся на сервере, который использует этот стандартный блок титульной страницы. Например, можно заменить старый логотип новым. Или, если название проекта изменится, можно обновить текст в XML-элементе, сопоставленном с элементом управления текстовым содержимым, содержащим имя проекта, тем самым автоматически обновив все документы, хранящиеся на сервере.
В этих примерах используются следующие объекты:
CustomXMLPart (основная объектная модель Microsoft Office)
CustomXMLParts (базовая объектная модель Microsoft Office)
Пример
Предположим, что пользователь вставил настраиваемый стандартный блок документа в документ и на основе этого действия вы хотите вставить и сопоставить его с пользовательской XML-частью.
<?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>
Следующий пример кода загружает предыдущий XML-файл и сопоставляет каждый элемент управления содержимым с соответствующим узлом XML в этой новой настраиваемой XML-части при добавлении стандартного блока документа с именем "Отчет компании".
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
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.