插入构建基块时将控件绑定到数据存储区中的特定行
文档构建基块是预先设计的内容块,如封面、页眉、页脚或合同中的定制条款等。 自定义构建基块可让你更轻松地快速创建专业外观的 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>
以下示例代码在添加名为 Company Report 的文档构建基块时,加载上一个 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。