插入构建基块时将控件绑定到数据存储区中的特定行

文档构建基块是预先设计的内容块,如封面、页眉、页脚或合同中的定制条款等。 自定义构建基块可让你更轻松地快速创建专业外观的 Word 文档。

在已映射到包含数据的 XML 的自定义构建基块中使用内容控件。 在插入部件时,这些内容控件的内容会自动链接到适当的自定义 XML 部件(如果有)。 或者,如以下示例所示,插入部件时,可以动态地添加自定义 XML 部件和 XML 映射。 例如,若要构造封面,可以放置一个图片内容控件,该控件显示从附加 的 CustomXMLPart 对象中的元素检索到的图像。 同样,可以通过将文本内容控件映射到包含项目名称的 CustomXMLPart 对象中的元素,来创建项目名称。

这简化了数据的更新。 要更新其中一个项目,可以编写简短的代码,以更新存储在使用此封面页构建基块的服务器上的每个文档。 例如,可以用新的徽标替换旧的徽标。 或者,如果项目标题发生更改,那么可以更新映射到包含项目名称的文本内容控件的 XML 元素中的文本,从而自动更新存储在服务器上的所有文档。

以下示例中所用对象如下:

示例

假设用户已将自定义文档构建基块插入文档中,在此操作基础上,您希望插入自定义 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。