Compartir a través de


Enlazar controles a una fila específica del almacén de datos al insertar un bloque de creación

El bloque de creación de un documento es un elemento de contenido prediseñado, como una portada, un encabezado, un pie de página o una cláusula integrada personalizada de un contrato. Los bloques de creación personalizados facilitan la creación rápida de documentos de Word de aspecto profesional.

Use controles de contenido dentro de bloques de creación personalizados que se han asignado a XML que contiene datos. El contenido de dichos controles de contenido se vincula entonces automáticamente al fragmento XML personalizado adecuado (si está presente) cuando se inserta el fragmento. Como opción, tal como muestra el ejemplo siguiente, puede agregar dinámicamente el fragmento XML personalizado y las asignaciones XML cuando se inserta el fragmento. Por ejemplo, para crear una portada, puede colocar un control de contenido de imagen que muestre una imagen recuperada a partir de un elemento de un objeto CustomXMLPart adjunto. De igual forma, puede crear el nombre del proyecto mediante un control de contenido de texto que asigne a un elemento de un objeto CustomXMLPart que contenga el nombre del proyecto.

Esto facilita la actualización de los datos. Para actualizar uno de estos elementos, puede escribir unas cuantas líneas de código para actualizar todos los documentos almacenados en el servidor que utilicen este bloque de creación de portada. Por ejemplo, puede reemplazar un logotipo antiguo por el nuevo. O, si cambia el título del proyecto, puede actualizar el texto del elemento XML asignado al control de contenido que contiene el nombre del proyecto; por tanto, se actualizan automáticamente todos los documentos almacenados en el servidor.

Los objetos usados en estos ejemplos son:

Muestra

Suponga que el usuario ha insertado su bloque de creación de documentos personalizado en un documento y que, basándose en dicha acción, desea insertar y asignar al fragmento XML personalizado.

<?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>

El ejemplo de código siguiente carga el archivo XML anterior y asigna cada control de contenido al nodo XML adecuado en el nuevo fragmento XML personalizado, cuando se agrega el bloque de creación de documento llamado "Company Report".

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.