Cómo: Agregar etiquetas inteligentes a libros de Excel

Puede agregar etiquetas inteligentes a los libros de Microsoft Office Excel para reconocer texto y proporcionar acceso al usuario a las acciones relacionadas con los términos reconocidos. 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 libros. 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.

Se aplica a: la información de este tema se aplica a los proyectos de nivel de documento y los proyectos de nivel de aplicación para Excel 2007. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

En este tema se describen las tareas siguientes:

  • Agregar etiquetas inteligentes en personalizaciones en el nivel del documento

  • Agregar etiquetas inteligentes en complementos 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.

vínculo a vídeo Dispone de una versión en vídeo de este tema en How Do I: Add Smart Tags to Excel Workbooks.

Agregar etiquetas inteligentes en personalizaciones en el nivel del documento

Al agregar una etiqueta inteligente utilizando una personalización en el nivel del documento, la etiqueta inteligente sólo se reconoce en el libro 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 ThisWorkbook.

En el ejemplo de código siguiente, se crea una etiqueta inteligente que reconoce la palabra sale y la expresión regular [I|i]ssue\s\d{5,6}. Cuando el usuario escribe sale o una cadena que coincida con la expresión regular (por ejemplo, issue 12345) y, a continuación, hace clic en la etiqueta inteligente, se muestra la ubicación de la celda del texto reconocido. Para ejecutar este código, agréguelo a la clase ThisWorkbook y, a continuación, llame al método AddSmartTag desde el controlador de eventos ThisWorkbook_Startup.

Nota

El siguiente ejemplo funciona en proyectos destinados a .NET Framework 4. Para usar este ejemplo en proyectos destinados a .NET Framework 3.5, vea los comentarios del código.

WithEvents displayAddress As Microsoft.Office.Tools.Excel.Action

Private Sub AddSmartTag()

    ' Create the smart tag for .NET Framework 4 projects.
    Dim smartTagDemo As Microsoft.Office.Tools.Excel.SmartTag = _
        Globals.Factory.CreateSmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Demonstration Smart Tag")

    ' For .NET Framework 3.5 projects, use the following code to create the smart tag.
    ' Dim smartTagDemo As New  _
    '    Microsoft.Office.Tools.Excel.SmartTag( _
    '    "www.microsoft.com/Demo#DemoSmartTag", _
    '    "Demonstration Smart Tag")

    ' Specify a term and an expression to recognize.
    smartTagDemo.Terms.Add("sale")
    smartTagDemo.Expressions.Add( _
        New System.Text.RegularExpressions.Regex( _
        "[I|i]ssue\s\d{5,6}"))

    ' Create the action for .NET Framework 4 projects.
    displayAddress = Globals.Factory.CreateAction("To be replaced")

    ' For .NET Framework 3.5 projects, use the following code to create the action.
    ' displayAddress = New Microsoft.Office.Tools.Excel.Action("To be replaced")

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

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

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

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

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

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

    Dim smartTagAddress As String = e.Range.Address( _
        ReferenceStyle:=Excel.XlReferenceStyle.xlA1)
    MsgBox("The recognized text '" & e.Text & _
            "' is at range " & smartTagAddress)
End Sub
private Microsoft.Office.Tools.Excel.Action displayAddress;

private void AddSmartTag()
{
    // Create the smart tag for .NET Framework 4 projects.
    Microsoft.Office.Tools.Excel.SmartTag smartTagDemo =
        Globals.Factory.CreateSmartTag(
            "www.microsoft.com/Demo#DemoSmartTag",
            "Demonstration Smart Tag");

    // For .NET Framework 3.5 projects, use the following code to create the smart tag.
    // Microsoft.Office.Tools.Excel.SmartTag smartTagDemo =
        // new Microsoft.Office.Tools.Excel.SmartTag(
        //     "www.microsoft.com/Demo#DemoSmartTag",
        //     "Demonstration Smart Tag");

    // Specify a term and an expression to recognize.
    smartTagDemo.Terms.Add("sale");
    smartTagDemo.Expressions.Add(
        new System.Text.RegularExpressions.Regex(
        @"[I|i]ssue\s\d{5,6}"));

    // Create the action for .NET Framework 4 projects.
    displayAddress = Globals.Factory.CreateAction("To be replaced");

    // For .NET Framework 3.5 projects, use the following code to create the action.
    // displayAddress = new Microsoft.Office.Tools.Excel.Action("To be replaced");

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

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

    displayAddress.BeforeCaptionShow += new 
        Microsoft.Office.Tools.Excel.BeforeCaptionShowEventHandler(
        DisplayAddress_BeforeCaptionShow);

    displayAddress.Click += new 
        Microsoft.Office.Tools.Excel.ActionClickEventHandler(
        DisplayAddress_Click);
}

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

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

void DisplayAddress_Click(object sender, 
    Microsoft.Office.Tools.Excel.ActionEventArgs e)
{
    string smartTagAddress = e.Range.get_Address(missing,
        missing, Excel.XlReferenceStyle.xlA1, missing, missing);
    System.Windows.Forms.MessageBox.Show("The recognized text '" + e.Text +
        "' is at range " + smartTagAddress);
}

Agregar etiquetas inteligentes en complementos en el nivel de la aplicación

Al agregar una etiqueta inteligente mediante un complemento de nivel de aplicación, puede especificar si desea que la etiqueta inteligente funcione solo en un libro concreto o en todos los libros abiertos. Las etiquetas inteligentes que se ejecutan en todos los libros abiertos se denominan etiquetas inteligentes en el nivel de la aplicación.

Para agregar una etiqueta inteligente a un libro 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. Para crear un elemento host Microsoft.Office.Tools.Excel.Workbook para el libro que hospedará la etiqueta inteligente, utilice el método GetVstoObject. 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.

  3. Agregue el objeto SmartTag a la propiedad VstoSmartTags de Microsoft.Office.Tools.Excel.Workbook.

En el ejemplo de código siguiente, se crea una etiqueta inteligente que reconoce la palabra sale y la expresión regular [I|i]ssue\s\d{5,6}. Cuando el usuario escribe sale o una cadena que coincida con la expresión regular (por ejemplo, issue 12345) y, a continuación, hace clic en la etiqueta inteligente, se muestra la ubicación de la celda del texto reconocido. Para ejecutar este código, agréguelo a la clase ThisAddIn, llame al método AddSmartTagToWorkbook desde el controlador de eventos ThisAddIn_Startup y pase Microsoft.Office.Interop.Excel.Workbook a AddSmartTagToWorkbook.

Nota

El siguiente ejemplo funciona en proyectos destinados a .NET Framework 4. Para usar este ejemplo en proyectos destinados a .NET Framework 3.5, vea los comentarios del código.

WithEvents displayAddress As Microsoft.Office.Tools.Excel.Action

Private Sub AddSmartTagToWorkbook(ByVal workbook As Excel.Workbook)
    ' Create a smart tag for .NET Framework 3.5 projects.
    ' Dim smartTagDemo As New  _
    '    Microsoft.Office.Tools.Excel.SmartTag( _
    '    "www.microsoft.com/Demo#DemoSmartTag", _
    '    "Demonstration Smart Tag")
    ' Create a smart tag for .NET Framework 4 projects.
    Dim smartTagDemo As SmartTag = Globals.Factory.CreateSmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Demonstration Smart Tag")

    ' Specify a term and an expression to recognize.
    smartTagDemo.Terms.Add("sale")
    smartTagDemo.Expressions.Add( _
        New System.Text.RegularExpressions.Regex( _
        "[I|i]ssue\s\d{5,6}"))

    ' Create the action for .NET Framework 3.5 projects.
    ' displayAddress = New Microsoft.Office.Tools.Excel.Action( _
    '    "To be replaced")
    ' Create the action for .NET Framework 4 projects.
    displayAddress = Globals.Factory.CreateAction("To be replaced")

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


    ' Get the host item for the workbook in .NET Framework 3.5 projects.
    ' Dim vstoWorkbook As Microsoft.Office.Tools.Excel.Workbook = _
    '  workbook.GetVstoObject()
    ' Get the host item for the workbook in .NET Framework 4 projects.
    Dim vstoWorkbook As Microsoft.Office.Tools.Excel.Workbook = _
        Globals.Factory.GetVstoObject(workbook)

    ' Add the smart tag to the active workbook.
    vstoWorkbook.VstoSmartTags.Add(smartTagDemo)
End Sub


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

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

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

End Sub

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

    Dim smartTagAddress As String = e.Range.Address( _
        ReferenceStyle:=Excel.XlReferenceStyle.xlA1)
    MsgBox("The recognized text '" & e.Text & _
            "' is at range " & smartTagAddress)
End Sub
private Microsoft.Office.Tools.Excel.Action displayAddress;

private void AddSmartTagToWorkbook(Excel.Workbook workbook)
{
    Microsoft.Office.Tools.Excel.SmartTag smartTagDemo =
        // Create a smart tag for .NET Framework 3.5 projects.
        // new Microsoft.Office.Tools.Excel.SmartTag(
        //    "www.microsoft.com/Demo#DemoSmartTag",
        //    "Demonstration Smart Tag");
        // Create a smart tag for .NET Framework 4 projects.
        Globals.Factory.CreateSmartTag(
            "www.microsoft.com/Demo#DemoSmartTag",
            "Demonstration Smart Tag");

    // Specify a term and an expression to recognize.
    smartTagDemo.Terms.Add("sale");
    smartTagDemo.Expressions.Add(
        new System.Text.RegularExpressions.Regex(
        @"[I|i]ssue\s\d{5,6}"));

    // Create the action for .NET Framework 3.5 projects.
    // displayAddress = new Microsoft.Office.Tools.Excel.Action(
    //    "To be replaced");
    // Create the action for .NET Framework 4 projects.
    displayAddress = Globals.Factory.CreateAction("To be replaced");

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

    // Get the host item for the workbook in .NET Framework 3.5 projects.
    // Microsoft.Office.Tools.Excel.Workbook vstoWorkbook =
    //    workbook.GetVstoObject();
    // Get the host item for the workbook in .NET Framework 4 projects.
    Microsoft.Office.Tools.Excel.Workbook vstoWorkbook =
        Globals.Factory.GetVstoObject(workbook);

    // Add the smart tag to the active workbook.
    vstoWorkbook.VstoSmartTags.Add(smartTagDemo);

    displayAddress.BeforeCaptionShow += new
        Microsoft.Office.Tools.Excel.BeforeCaptionShowEventHandler(
        DisplayAddress_BeforeCaptionShow);

    displayAddress.Click += new
        Microsoft.Office.Tools.Excel.ActionClickEventHandler(
        DisplayAddress_Click);
}

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

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

void DisplayAddress_Click(object sender,
    Microsoft.Office.Tools.Excel.ActionEventArgs e)
{
    string smartTagAddress = e.Range.get_Address(missing,
        missing, Excel.XlReferenceStyle.xlA1, missing, missing);
    System.Windows.Forms.MessageBox.Show("The recognized text '" + e.Text +
        "' is at range " + smartTagAddress);
}

Para agregar una etiqueta inteligente que funcione en todos los libros 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.

En el ejemplo de código siguiente, se crea una etiqueta inteligente que reconoce la palabra sale y la expresión regular [I|i]ssue\s\d{5,6}. Cuando el usuario escribe sale o una cadena que coincida con la expresión regular (por ejemplo, issue 12345) y, a continuación, hace clic en la etiqueta inteligente, se muestra la ubicación de la celda del texto reconocido. 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.

Nota

El siguiente ejemplo funciona en proyectos destinados a .NET Framework 4. Para usar este ejemplo en proyectos destinados a .NET Framework 3.5, vea los comentarios del código.

WithEvents displayAddress As Microsoft.Office.Tools.Excel.Action

Private Sub AddSmartTag()

    ' Create the smart tag for .NET Framework 4 projects.
    Dim smartTagDemo As Microsoft.Office.Tools.Excel.SmartTag = _
        Globals.Factory.CreateSmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Demonstration Smart Tag")

    ' For .NET Framework 3.5 projects, use the following code to create the smart tag.
    ' Dim smartTagDemo As New  _
    '    Microsoft.Office.Tools.Excel.SmartTag( _
    '    "www.microsoft.com/Demo#DemoSmartTag", _
    '    "Demonstration Smart Tag")

    ' Specify a term and an expression to recognize.
    smartTagDemo.Terms.Add("sale")
    smartTagDemo.Expressions.Add( _
        New System.Text.RegularExpressions.Regex( _
        "[I|i]ssue\s\d{5,6}"))

    ' Create the action for .NET Framework 4 projects.
    displayAddress = Globals.Factory.CreateAction("To be replaced")

    ' For .NET Framework 3.5 projects, use the following code to create the action.
    ' displayAddress = New Microsoft.Office.Tools.Excel.Action("To be replaced")

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

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

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

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

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

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

    Dim smartTagAddress As String = e.Range.Address( _
        ReferenceStyle:=Excel.XlReferenceStyle.xlA1)
    MsgBox("The recognized text '" & e.Text & _
            "' is at range " & smartTagAddress)
End Sub
private Microsoft.Office.Tools.Excel.Action displayAddress;

private void AddSmartTag()
{
    // Create the smart tag for .NET Framework 4 projects.
    Microsoft.Office.Tools.Excel.SmartTag smartTagDemo =
        Globals.Factory.CreateSmartTag(
            "www.microsoft.com/Demo#DemoSmartTag",
            "Demonstration Smart Tag");

    // For .NET Framework 3.5 projects, use the following code to create the smart tag.
    // Microsoft.Office.Tools.Excel.SmartTag smartTagDemo =
        // new Microsoft.Office.Tools.Excel.SmartTag(
        //     "www.microsoft.com/Demo#DemoSmartTag",
        //     "Demonstration Smart Tag");

    // Specify a term and an expression to recognize.
    smartTagDemo.Terms.Add("sale");
    smartTagDemo.Expressions.Add(
        new System.Text.RegularExpressions.Regex(
        @"[I|i]ssue\s\d{5,6}"));

    // Create the action for .NET Framework 4 projects.
    displayAddress = Globals.Factory.CreateAction("To be replaced");

    // For .NET Framework 3.5 projects, use the following code to create the action.
    // displayAddress = new Microsoft.Office.Tools.Excel.Action("To be replaced");

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

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

    displayAddress.BeforeCaptionShow += new 
        Microsoft.Office.Tools.Excel.BeforeCaptionShowEventHandler(
        DisplayAddress_BeforeCaptionShow);

    displayAddress.Click += new 
        Microsoft.Office.Tools.Excel.ActionClickEventHandler(
        DisplayAddress_Click);
}

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

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

void DisplayAddress_Click(object sender, 
    Microsoft.Office.Tools.Excel.ActionEventArgs e)
{
    string smartTagAddress = e.Range.get_Address(missing,
        missing, Excel.XlReferenceStyle.xlA1, missing, missing);
    System.Windows.Forms.MessageBox.Show("The recognized text '" + e.Text +
        "' is at range " + smartTagAddress);
}

Seguridad

Debe habilitar las etiquetas inteligentes en Excel. 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 documentos de Word

Cómo: Crear etiquetas inteligentes con reconocedores personalizados en Word y .NET Framework 3.5

Cómo: Crear etiquetas inteligentes con reconocedores personalizados en Excel y .NET Framework 3.5

Tutorial: Crear una etiqueta inteligente usando una personalización de nivel de documento.

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

Conceptos

Arquitectura de las etiquetas inteligentes

Otros recursos

How Do I: Add Smart Tags to Excel Workbooks?

Información general sobre etiquetas inteligentes

Desarrollar soluciones de Office