Cómo: Agregar controles de contenido a documentos de Word

Actualización: Julio de 2008

Se aplica a

La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office.

Tipo de proyecto

  • Proyectos de nivel de documento

  • Proyectos de nivel de aplicación

Versión de Microsoft Office

  • Word 2007

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

En proyectos en el nivel del documento, puede agregar controles de contenido al documento en el proyecto en tiempo de diseño o en tiempo de ejecución. A partir de Visual Studio 2008 Service Pack 1 (SP1), también puede agregar controles de contenido en tiempo de ejecución a cualquier documento abierto utilizando un complemento en el nivel de la aplicación para Word 2007.

En este tema se describen las tareas siguientes:

  • Agregar controles de contenido en tiempo de diseño

  • Agregar controles de contenido en tiempo de ejecución en un proyecto en el nivel del documento

  • Agregar controles de contenido en tiempo de ejecución en un proyecto en el nivel de la aplicación

Para obtener más información sobre los controles de contenido, vea Controles de contenido.

Agregar controles de contenido en tiempo de diseño

Hay varias maneras de agregar controles de contenido al documento en tiempo de diseño en un proyecto en el nivel del documento:

  • Agregue un control de contenido desde la ficha Controles de Word del Cuadro de herramientas.

  • Agregue un control de contenido al documento de la misma manera en que agregaría un control de contenido nativo en Word.

  • Arrastre un control de contenido al documento desde la ventana Orígenes de datos. Este método resulta útil cuando se desea enlazar el control a los datos en el momento en que crea el control. Para obtener más información, vea Cómo: Rellenar documentos con datos de objetos y Cómo: Rellenar documentos con datos de una base de datos.

Nota:

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Para agregar un control de contenido a un documento mediante el Cuadro de herramientas

  1. En el documento que se hospeda en el diseñador de Visual Studio, coloque el cursor donde desea agregar el control de contenido o seleccione el texto que debe reemplazar el control de contenido.

  2. Abra el Cuadro de herramientas y haga clic en la ficha Controles de Word.

  3. Agregue el control de cualquiera de las maneras siguientes:

    • Haga doble clic en un control de contenido en el Cuadro de herramientas.

      O bien,

    • Haga clic en un control de contenido en el Cuadro de herramientas y, a continuación, presione la tecla Entrar.

      O bien,

    • Arrastre un control de contenido desde el Cuadro de herramientas hasta el documento. El control de contenido se agrega en la selección actual del documento, no en la ubicación del puntero del mouse.

Nota:

No puede agregar objetos GroupContentControl mediante el Cuadro de herramientas. Sólo puede agregar un objeto GroupContentControl en Word o en tiempo de ejecución.

Para agregar un control de contenido a un documento de Word

  1. En el documento que se hospeda en el diseñador de Visual Studio, coloque el cursor donde desea agregar el control de contenido o seleccione el texto que debe reemplazar el control de contenido.

  2. En la cinta de opciones, haga clic en la ficha Desarrollador.

    Nota:

    Si la ficha Desarrollador no está visible, debe mostrarla primero. Para obtener más información, consulte Cómo: Mostrar la ficha Programador en la cinta de opciones.

  3. En el grupo Controles, haga clic en el icono del control de contenido que desea agregar.

Agregar controles de contenido en tiempo de ejecución en un proyecto en el nivel del documento

Puede agregar controles de contenido al documento mediante programación en tiempo de ejecución con métodos de la propiedad Controls de la clase ThisDocument del proyecto. Cada método tiene tres sobrecargas que puede utilizar para agregar un control de contenido de las maneras siguientes:

  • Agregar un control en la selección actual.

  • Agregar un control en un intervalo especificado.

  • Agregar un control basado en un control de contenido nativo del documento.

Los controles de contenido de Visual Studio Tools para Office creados de forma dinámica no se conservan en el documento como controles host cuando éste se cierra. Sin embargo, un control de contenido nativo permanece en el documento. Puede volver a crear un control de contenido de Visual Studio Tools para Office basado en un control de contenido nativo la próxima vez que se abra el documento. Para obtener más información, vea Agregar controles a documentos de Office en tiempo de ejecución.

Para agregar un control de contenido en la selección actual

  • Utilice un método ControlCollection con el nombre Add<clase de control> (donde clase de control es el nombre de clase del control de contenido que desea agregar, como AddRichTextContentControl) y con un único parámetro para el nombre del nuevo control.

    En el ejemplo de código siguiente se utiliza el método ControlCollection.AddRichTextContentControl(String) para agregar un nuevo RichTextContentControl al principio del documento. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método AddRichTextControlAtSelection desde el controlador de eventos ThisDocument_Startup.

    Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtSelection()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Me.Paragraphs(1).Range.Select()
        richTextControl1 = Me.Controls.AddRichTextContentControl("richTextControl1")
        richTextControl1.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        this.Paragraphs[1].Range.Select();
    
        richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Para agregar un control de contenido en un intervalo especificado

  • Utilice un método ControlCollection con el nombre Add<clase de control> (donde clase de control es el nombre de la clase de control de contenido que desea agregar, como AddRichTextContentControl) y con un parámetro Microsoft.Office.Interop.Word.Range.

    En el ejemplo de código siguiente se utiliza el método ControlCollection.AddRichTextContentControl(Range, String) para agregar un nuevo RichTextContentControl al principio del documento. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método AddRichTextControlAtRange desde el controlador de eventos ThisDocument_Startup.

    Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtRange()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        richTextControl2 = Me.Controls.AddRichTextContentControl(Me.Paragraphs(1).Range, _
            "richTextControl2")
        richTextControl2.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
    
        richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range,
            "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

Para agregar un control de contenido basado en un control de contenido nativo

  • Utilice un método ControlCollection con el nombre Add<clase de control> (donde clase de control es el nombre de la clase de control de contenido que desea agregar, como AddRichTextContentControl) y con un parámetro Microsoft.Office.Interop.Word.ContentControl.

    En el ejemplo de código siguiente se utiliza el método ControlCollection.AddRichTextContentControl(ContentControl, String) para crear un nuevo control RichTextContentControl por cada control de texto enriquecido nativo que está en el documento. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método CreateRichTextControlsFromNativeControls desde el controlador de eventos ThisDocument_Startup.

    Private richTextControls As New System.Collections.Generic.List _
            (Of Microsoft.Office.Tools.Word.RichTextContentControl)
    
    Private Sub CreateRichTextControlsFromNativeControls()
        If Me.ContentControls.Count <= 0 Then
            Return
        End If
    
        Dim count As Integer = 0
        For Each nativeControl As Word.ContentControl In Me.ContentControls
            If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then
                count += 1
                Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _
                    Me.Controls.AddRichTextContentControl(nativeControl, _
                    "VSTORichTextContentControl" + count.ToString())
                richTextControls.Add(tempControl)
            End If
        Next nativeControl
    End Sub
    
    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void CreateRichTextControlsFromNativeControls()
    {
        if (this.ContentControls.Count <= 0)
            return;
    
        richTextControls = new System.Collections.Generic.List
            <Microsoft.Office.Tools.Word.RichTextContentControl>();
        int count = 0;
    
        foreach (Word.ContentControl nativeControl in this.ContentControls)
        {
            if (nativeControl.Type ==
                Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
            {
                count++;
                Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                    this.Controls.AddRichTextContentControl(nativeControl,
                    "VSTORichTextControl" + count.ToString());
                richTextControls.Add(tempControl);
            }
        }
    }
    

Agregar controles de contenido en tiempo de ejecución en un proyecto en el nivel de la aplicación

A partir del SP1, también puede agregar mediante programación controles de contenido en tiempo de ejecución a cualquier documento abierto utilizando un complemento en el nivel de la aplicación. Para ello, genere un elemento host Document basado en un documento abierto y utilice métodos de la propiedad Controls de este elemento host. Cada método tiene tres sobrecargas que puede utilizar para agregar un control de contenido de las maneras siguientes:

  • Agregar un control en la selección actual.

  • Agregar un control en un intervalo especificado.

  • Agregar un control basado en un control de contenido nativo del documento.

Los controles de contenido de Visual Studio Tools para Office creados de forma dinámica no se conservan en el documento como controles host cuando éste se cierra. Sin embargo, un control de contenido nativo permanece en el documento. Puede volver a crear un control de contenido de Visual Studio Tools para Office basado en un control de contenido nativo la próxima vez que se abra el documento. Para obtener más información, vea Guardar controles dinámicos en documentos de Office.

Para obtener más información sobre cómo generar elementos host en proyectos en el nivel de la aplicación, vea Ampliar documentos de Word y libros de Excel en complementos en el nivel de la aplicación en tiempo de ejecución.

Para agregar un control de contenido en la selección actual

  • Utilice un método ControlCollection con el nombre Add<clase de control> (donde clase de control es el nombre de clase del control de contenido que desea agregar, como AddRichTextContentControl) y con un único parámetro para el nombre del nuevo control.

    En el ejemplo de código siguiente se utiliza el método ControlCollection.AddRichTextContentControl(String) para agregar un nuevo RichTextContentControl al principio del documento activo. Para ejecutar este código, agregue el código a la clase ThisAddIn del proyecto y llame al método AddRichTextControlAtSelection desde el controlador de eventos ThisAddIn_Startup.

    Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtSelection()
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
        currentDocument.Paragraphs(1).Range.Select()
    
        Dim extendedDocument As Document = currentDocument.GetVstoObject()
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1")
        richTextControl1.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
        currentDocument.Paragraphs[1].Range.Select();
    
        Document extendedDocument = currentDocument.GetVstoObject();
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl(
            "richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Para agregar un control de contenido en un intervalo especificado

  • Utilice un método ControlCollection con el nombre Add<clase de control> (donde clase de control es el nombre de la clase de control de contenido que desea agregar, como AddRichTextContentControl) y con un parámetro Microsoft.Office.Interop.Word.Range.

    En el ejemplo de código siguiente se utiliza el método ControlCollection.AddRichTextContentControl(Range, String) para agregar un nuevo RichTextContentControl al principio del documento activo. Para ejecutar este código, agregue el código a la clase ThisAddIn del proyecto y llame al método AddRichTextControlAtRange desde el controlador de eventos ThisAddIn_Startup.

    Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtRange()
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        Dim extendedDocument As Document = currentDocument.GetVstoObject()
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( _
            extendedDocument.Paragraphs(1).Range, "richTextControl2")
        richTextControl2.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        Document extendedDocument = currentDocument.GetVstoObject();
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

Para agregar un control de contenido basado en un control de contenido nativo

  • Utilice un método ControlCollection con el nombre Add<clase de control> (donde clase de control es el nombre de la clase de control de contenido que desea agregar, como AddRichTextContentControl) y con un parámetro Microsoft.Office.Interop.Word.ContentControl.

    En el ejemplo de código siguiente se utiliza el método ControlCollection.AddRichTextContentControl(ContentControl, String) para crear un nuevo control RichTextContentControl por cada control de texto enriquecido nativo que está en el documento después de abrirlo. Para ejecutar este código, agréguelo a la clase ThisAddIn del proyecto.

    Private richTextControls As New System.Collections.Generic.List _
        (Of Microsoft.Office.Tools.Word.RichTextContentControl)
    
    Private Sub Application_DocumentOpen(ByVal Doc As Microsoft.Office.Interop.Word.Document) _
        Handles Application.DocumentOpen
    
        If Doc.ContentControls.Count > 0 Then
            Dim extendedDocument As Document = Doc.GetVstoObject()
            Dim count As Integer = 0
            For Each nativeControl As Word.ContentControl In Doc.ContentControls
                If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then
                    count += 1
                    Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _
                        extendedDocument.Controls.AddRichTextContentControl(nativeControl, _
                        "VSTORichTextContentControl" + count.ToString())
                    richTextControls.Add(tempControl)
                End If
            Next nativeControl
        End If
    End Sub
    
    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc)
    {
        if (Doc.ContentControls.Count > 0)
        {
            Document extendedDocument = Doc.GetVstoObject();
            richTextControls = new System.Collections.Generic.List
                <Microsoft.Office.Tools.Word.RichTextContentControl>();
            int count = 0;
    
            foreach (Word.ContentControl nativeControl in Doc.ContentControls)
            {
                if (nativeControl.Type ==
                    Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
                {
                    count++;
                    Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                        extendedDocument.Controls.AddRichTextContentControl(nativeControl,
                        "VSTORichTextControl" + count.ToString());
                    richTextControls.Add(tempControl);
                }
            }
        }
    }
    

    En C#, además debe asociar el controlador de eventos Application_DocumentOpen al evento DocumentOpen.

    this.Application.DocumentOpen +=
        new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
    

Vea también

Conceptos

Información general sobre elementos y controles Host

Agregar controles a documentos de Office en tiempo de ejecución

Limitaciones de programación de elementos y controles Host

Programar complementos de nivel de aplicación

Programar personalizaciones de nivel de documento

Métodos auxiliares para controles host

Otros recursos

Controles Host de Word

Historial de cambios

Fecha

Historial

Motivo

Julio de 2008

Se agrega un procedimiento para los complementos en el nivel de la aplicación.

Cambio de características de SP1.