Compartir a través de


Cómo: Agregar etiquetas inteligentes 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.

Proyectos de nivel de documento

  • Word 2003

  • Word 2007

Proyectos de nivel de aplicación

  • Word 2007

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

Puede agregar etiquetas inteligentes a documentos de Microsoft Office Word para reconocer el texto y proporcionar al usuario acceso a las acciones relacionadas con las condiciones reconocidas.

A partir de Visual Studio 2008 Service Pack 1 (SP1), puede utilizar complementos en el nivel de la aplicación para agregar etiquetas inteligentes a cualquier documento abierto. El código que se escribe para crear y configurar una etiqueta inteligente es el mismo para los proyectos en el nivel del documento y en el nivel de la aplicación, aunque existen algunas diferencias en la manera de asociar una etiqueta inteligente a los documentos. El ámbito de la etiquetas inteligentes también varía entre los proyectos en el nivel del documento y los proyectos en el nivel de la aplicación.

En este tema se describen las tareas siguientes:

  • Agregar una etiqueta inteligente utilizando una personalización en el nivel del documento

  • Agregar una etiqueta inteligente utilizando un complemento en el nivel de la aplicación

Para ejecutar una etiqueta inteligente, los usuarios finales deben tener las etiquetas inteligentes habilitadas en Word o en Excel. Para obtener más información, vea Cómo: Habilitar las etiquetas inteligentes en Word y en Excel.

Agregar una etiqueta inteligente utilizando una personalización en el nivel del documento

Las etiquetas inteligentes de las personalizaciones en el nivel del documento sólo se reconocen en el documento que está asociado a la personalización.

Para agregar una etiqueta inteligente utilizando una personalización en el nivel del documento

  1. Cree un objeto SmartTag y configúrelo para definir el comportamiento de la etiqueta inteligente:

    • Para especificar el texto que desee reconocer, utilice la propiedad Terms o Expressions.

    • Para definir las acciones de la etiqueta inteligente en las que los usuarios pueden hacer clic, agregue uno o varios objetos Action a la propiedad Actions.

    Para obtener más información, vea Arquitectura de las etiquetas inteligentes.

  2. Agregue el objeto SmartTag a la propiedad VstoSmartTags de la clase ThisDocument.

En el ejemplo de código siguiente, se crea una etiqueta inteligente que reconoce las palabras term y recognize. Cuando el usuario hace clic en la etiqueta inteligente, se muestra la posición de los caracteres inicial y final de la palabra reconocida. Para ejecutar este código, agréguelo a la clase ThisDocument y, a continuación, llame al método AddSmartTag desde el controlador de eventos ThisDocument_Startup.

Private WithEvents displayAddress As Microsoft.Office.Tools.Word.Action

Private Sub AddSmartTag()
    Dim smartTagDemo As New  _
        Microsoft.Office.Tools.Word.SmartTag( _
        "www.microsoft.com/Demo#DemoSmartTag", _
        "Demonstration Smart Tag")

    ' Specify the terms to recognize.
    smartTagDemo.Terms.Add("term")
    smartTagDemo.Terms.Add("recognize")

    ' Create the action.
    displayAddress = New Microsoft.Office.Tools.Word.Action("To be replaced")

    ' Add the action to the smart tag.
    smartTagDemo.Actions = New Microsoft.Office.Tools.Word.Action() { _
            displayAddress}

    ' Add the smart tag.
    Me.VstoSmartTags.Add(smartTagDemo)
End Sub

Private Sub OpenMessageBox_BeforeCaptionShow(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _
    Handles DisplayAddress.BeforeCaptionShow

    Dim clickedAction As Microsoft.Office.Tools.Word.Action = _
        TryCast(sender, Microsoft.Office.Tools.Word.Action)

    If clickedAction IsNot Nothing Then
        clickedAction.Caption = "Display the location of " & e.Text
    End If
End Sub

Private Sub DisplayAddress_Click(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _
    Handles DisplayAddress.Click

    Dim termStart As Integer = e.Range.Start
    Dim termEnd As Integer = e.Range.End
    MsgBox("The recognized text '" & e.Text & _
            "' begins at position " & termStart & _
            " and ends at position " & termEnd)
End Sub
private Microsoft.Office.Tools.Word.Action displayAddress;

private void AddSmartTag()
{
    Microsoft.Office.Tools.Word.SmartTag smartTagDemo =
        new Microsoft.Office.Tools.Word.SmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Demonstration Smart Tag");

    // Specify the terms to recognize.
    smartTagDemo.Terms.Add("term");
    smartTagDemo.Terms.Add("recognize");

    // Create the action.
    displayAddress = new Microsoft.Office.Tools.Word.Action("To be replaced");

    // Add the action to the smart tag.
    smartTagDemo.Actions = new Microsoft.Office.Tools.Word.Action[] { 
        displayAddress };

    // Add the smart tag.
    this.VstoSmartTags.Add(smartTagDemo);

    displayAddress.BeforeCaptionShow += new
        Microsoft.Office.Tools.Word.BeforeCaptionShowEventHandler(
        displayAddress_BeforeCaptionShow);

    displayAddress.Click += new
        Microsoft.Office.Tools.Word.ActionClickEventHandler(
        displayAddress_Click);
}

void displayAddress_BeforeCaptionShow(object sender,
    Microsoft.Office.Tools.Word.ActionEventArgs e)
{
    Microsoft.Office.Tools.Word.Action clickedAction =
        sender as Microsoft.Office.Tools.Word.Action;

    if (clickedAction != null)
    {
        clickedAction.Caption = "Display the location of " +
            e.Text;
    }
}

void displayAddress_Click(object sender,
    Microsoft.Office.Tools.Word.ActionEventArgs e)
{
    int termStart = e.Range.Start;
    int termEnd = e.Range.End;
    System.Windows.Forms.MessageBox.Show("The recognized text '" + e.Text +
        "' begins at position " + termStart.ToString() +
        " and ends at position " + termEnd.ToString());
}

Agregar una etiqueta inteligente utilizando un complemento en el nivel de la aplicación

A partir del SP1, puede agregar una etiqueta inteligente usando un complemento en el nivel de la aplicación. Puede especificar si la etiqueta inteligente funcionará únicamente en un documento concreto o en todos los documentos abiertos (también denominada etiqueta inteligente en el nivel de la aplicación).

Para agregar una etiqueta inteligente a un documento concreto

  1. Cree un objeto SmartTag y configúrelo para definir el comportamiento de la etiqueta inteligente:

    • Para especificar el texto que desee reconocer, utilice la propiedad Terms o Expressions.

    • Para definir las acciones de la etiqueta inteligente en las que los usuarios pueden hacer clic, agregue uno o varios objetos Action a la propiedad Actions.

    Para obtener más información, vea Arquitectura de las etiquetas inteligentes.

  2. Utilice el método GetVstoObject para crear un elemento host Document para el documento que hospedará la etiqueta inteligente. Para obtener más información sobre la creación de elementos host, vea Ampliar documentos de Word y libros de Excel en complementos en el nivel de la aplicación en tiempo de ejecución.

    Nota:

    Si utiliza un proyecto creado antes de instalar el SP1, debe modificarlo antes de poder utilizar el método GetVstoObject. Para obtener más información, vea Ampliar documentos de Word y libros de Excel en complementos en el nivel de la aplicación en tiempo de ejecución.

  3. Agregue el objeto SmartTag a la propiedad VstoSmartTags de Document.

El ejemplo de código siguiente crea una etiqueta inteligente en el documento activo que reconoce las palabras term y recognize. Cuando el usuario hace clic en la etiqueta inteligente, se muestra la posición de los caracteres inicial y final de la palabra reconocida. Para ejecutar este código, agréguelo a la clase ThisAddIn y, a continuación, llame al método AddSmartTagToActiveDocument desde el controlador de eventos ThisAddIn_Startup.

Private WithEvents displayAddress As Microsoft.Office.Tools.Word.Action

Private Sub AddSmartTagToActiveDocument()
    Dim smartTagDemo As New  _
        Microsoft.Office.Tools.Word.SmartTag( _
        "www.microsoft.com/Demo#DemoSmartTag", _
        "Demonstration Smart Tag")

    ' Specify the terms to recognize.
    smartTagDemo.Terms.Add("term")
    smartTagDemo.Terms.Add("recognize")

    ' Create the action.
    displayAddress = New Microsoft.Office.Tools.Word.Action("To be replaced")

    ' Add the action to the smart tag.
    smartTagDemo.Actions = New Microsoft.Office.Tools.Word.Action() { _
            displayAddress}

    ' Get a Document host item, and add the smart tag to the document.
    Dim vstoDocument As Microsoft.Office.Tools.Word.Document = _
        Me.Application.ActiveDocument.GetVstoObject()
    vstoDocument.VstoSmartTags.Add(smartTagDemo)
End Sub

Private Sub OpenMessageBox_BeforeCaptionShow(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _
    Handles displayAddress.BeforeCaptionShow

    Dim clickedAction As Microsoft.Office.Tools.Word.Action = _
        TryCast(sender, Microsoft.Office.Tools.Word.Action)

    If clickedAction IsNot Nothing Then
        clickedAction.Caption = "Display the location of " & e.Text
    End If
End Sub

Private Sub DisplayAddress_Click(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _
    Handles displayAddress.Click

    Dim termStart As Integer = e.Range.Start
    Dim termEnd As Integer = e.Range.End
    MsgBox("The recognized text '" & e.Text & _
            "' begins at position " & termStart & _
            " and ends at position " & termEnd)
End Sub
private Microsoft.Office.Tools.Word.Action displayAddress;

private void AddSmartTagToActiveDocument()
{
    Microsoft.Office.Tools.Word.SmartTag smartTagDemo =
        new Microsoft.Office.Tools.Word.SmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Demonstration Smart Tag");

    // Specify the terms to recognize.
    smartTagDemo.Terms.Add("term");
    smartTagDemo.Terms.Add("recognize");

    // Create the action.
    displayAddress = new Microsoft.Office.Tools.Word.Action("To be replaced");

    // Add the action to the smart tag.
    smartTagDemo.Actions = new Microsoft.Office.Tools.Word.Action[] { 
        displayAddress };

    // Add the smart tag to the document.
    Microsoft.Office.Tools.Word.Document vstoDocument =
        this.Application.ActiveDocument.GetVstoObject();
    vstoDocument.VstoSmartTags.Add(smartTagDemo);

    displayAddress.BeforeCaptionShow += new
        Microsoft.Office.Tools.Word.BeforeCaptionShowEventHandler(
        displayAddress_BeforeCaptionShow);

    displayAddress.Click += new
        Microsoft.Office.Tools.Word.ActionClickEventHandler(
        displayAddress_Click);
}

void displayAddress_BeforeCaptionShow(object sender,
    Microsoft.Office.Tools.Word.ActionEventArgs e)
{
    Microsoft.Office.Tools.Word.Action clickedAction =
        sender as Microsoft.Office.Tools.Word.Action;

    if (clickedAction != null)
    {
        clickedAction.Caption = "Display the location of " +
            e.Text;
    }
}

void displayAddress_Click(object sender,
    Microsoft.Office.Tools.Word.ActionEventArgs e)
{
    int termStart = e.Range.Start;
    int termEnd = e.Range.End;
    System.Windows.Forms.MessageBox.Show("The recognized text '" + e.Text +
        "' begins at position " + termStart.ToString() +
        " and ends at position " + termEnd.ToString());
}

Para agregar una etiqueta inteligente que funcione en todos los documentos abiertos

  1. Cree un objeto SmartTag y configúrelo para definir el comportamiento de la etiqueta inteligente:

    • Para especificar el texto que desee reconocer, utilice la propiedad Terms o Expressions.

    • Para definir las acciones de la etiqueta inteligente en las que los usuarios pueden hacer clic, agregue uno o varios objetos Action a la propiedad Actions.

    Para obtener más información, vea Arquitectura de las etiquetas inteligentes.

  2. Agregue el objeto SmartTag a la propiedad VstoSmartTags de la clase ThisAddIn.

    Nota:

    Si utiliza un proyecto que creó antes de instalar SP1, debe modificarlo para generar la propiedad VstoSmartTags. Para obtener más información, vea Cómo: Agregar etiquetas inteligentes en el nivel de la aplicación a proyectos creados con anterioridad al SP1.

En el ejemplo de código siguiente, se crea una etiqueta inteligente que reconoce las palabras term y recognize. Cuando el usuario hace clic en la etiqueta inteligente, se muestra la posición de los caracteres inicial y final de la palabra reconocida. Para ejecutar este código, agréguelo a la clase ThisAddIn y, a continuación, llame al método AddSmartTag desde el controlador de eventos ThisAddIn_Startup.

Private WithEvents displayAddress As Microsoft.Office.Tools.Word.Action

Private Sub AddSmartTag()
    Dim smartTagDemo As New  _
        Microsoft.Office.Tools.Word.SmartTag( _
        "www.microsoft.com/Demo#DemoSmartTag", _
        "Demonstration Smart Tag")

    ' Specify the terms to recognize.
    smartTagDemo.Terms.Add("term")
    smartTagDemo.Terms.Add("recognize")

    ' Create the action.
    displayAddress = New Microsoft.Office.Tools.Word.Action("To be replaced")

    ' Add the action to the smart tag.
    smartTagDemo.Actions = New Microsoft.Office.Tools.Word.Action() { _
            displayAddress}

    ' Add the smart tag.
    Me.VstoSmartTags.Add(smartTagDemo)
End Sub

Private Sub OpenMessageBox_BeforeCaptionShow(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _
    Handles DisplayAddress.BeforeCaptionShow

    Dim clickedAction As Microsoft.Office.Tools.Word.Action = _
        TryCast(sender, Microsoft.Office.Tools.Word.Action)

    If clickedAction IsNot Nothing Then
        clickedAction.Caption = "Display the location of " & e.Text
    End If
End Sub

Private Sub DisplayAddress_Click(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _
    Handles DisplayAddress.Click

    Dim termStart As Integer = e.Range.Start
    Dim termEnd As Integer = e.Range.End
    MsgBox("The recognized text '" & e.Text & _
            "' begins at position " & termStart & _
            " and ends at position " & termEnd)
End Sub
private Microsoft.Office.Tools.Word.Action displayAddress;

private void AddSmartTag()
{
    Microsoft.Office.Tools.Word.SmartTag smartTagDemo =
        new Microsoft.Office.Tools.Word.SmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Demonstration Smart Tag");

    // Specify the terms to recognize.
    smartTagDemo.Terms.Add("term");
    smartTagDemo.Terms.Add("recognize");

    // Create the action.
    displayAddress = new Microsoft.Office.Tools.Word.Action("To be replaced");

    // Add the action to the smart tag.
    smartTagDemo.Actions = new Microsoft.Office.Tools.Word.Action[] { 
        displayAddress };

    // Add the smart tag.
    this.VstoSmartTags.Add(smartTagDemo);

    displayAddress.BeforeCaptionShow += new
        Microsoft.Office.Tools.Word.BeforeCaptionShowEventHandler(
        displayAddress_BeforeCaptionShow);

    displayAddress.Click += new
        Microsoft.Office.Tools.Word.ActionClickEventHandler(
        displayAddress_Click);
}

void displayAddress_BeforeCaptionShow(object sender,
    Microsoft.Office.Tools.Word.ActionEventArgs e)
{
    Microsoft.Office.Tools.Word.Action clickedAction =
        sender as Microsoft.Office.Tools.Word.Action;

    if (clickedAction != null)
    {
        clickedAction.Caption = "Display the location of " +
            e.Text;
    }
}

void displayAddress_Click(object sender,
    Microsoft.Office.Tools.Word.ActionEventArgs e)
{
    int termStart = e.Range.Start;
    int termEnd = e.Range.End;
    System.Windows.Forms.MessageBox.Show("The recognized text '" + e.Text +
        "' begins at position " + termStart.ToString() +
        " and ends at position " + termEnd.ToString());
}

Seguridad

Debe habilitar las etiquetas inteligentes en Word. No están habilitadas de manera predeterminada. Para obtener más información, vea Cómo: Habilitar las etiquetas inteligentes en Word y en Excel.

Vea también

Tareas

Cómo: Habilitar las etiquetas inteligentes en Word y en Excel

Cómo: Agregar etiquetas inteligentes a libros de Excel

Cómo: Agregar etiquetas inteligentes en el nivel de la aplicación a proyectos creados con anterioridad al SP1

Cómo: Crear etiquetas inteligentes con reconocedores personalizados en Word

Cómo: Crear etiquetas inteligentes con reconocedores personalizados en Excel

Tutorial: Crear una etiqueta inteligente usando una personalización en el nivel del documento.

Tutorial: Crear una etiqueta inteligente usando un complemento en el nivel de la aplicación

Conceptos

Información general sobre etiquetas inteligentes

Arquitectura de las etiquetas inteligentes

Arquitectura de las etiquetas inteligentes

Desarrollar soluciones de Office

Historial de cambios

Fecha

Historial

Motivo

Julio de 2008

Se agregan nuevos procedimientos para los complementos en el nivel de la aplicación.

Cambio de características de SP1.