Cómo: Agregar etiquetas inteligentes a libros de Excel

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

  • Excel 2003

  • Excel 2007

Proyectos de nivel de aplicación

  • Excel 2007

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

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.

En este tema se describen las tareas siguientes:

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.

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.

private Microsoft.Office.Tools.Excel.Action displayAddress;

private void AddSmartTag()
{
    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.
    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);
}


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 libro concreto o en todos ellos. 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. Utilice el método GetVstoObject para crear un elemento host Workbook para el libro donde se 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.

    ms178788.alert_note(es-es,VS.90).gifNota:

    Si utiliza un proyecto que creó antes de instalar 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 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 y, a continuación, llame al método AddSmartTagToActiveWorkbook desde el controlador de eventos ThisAddIn_Startup.

private Microsoft.Office.Tools.Excel.Action displayAddress;

private void AddSmartTagToActiveWorkbook()
{
    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.
    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 to the active workbook.
    Microsoft.Office.Tools.Excel.Workbook vstoWorkbook =
        this.Application.ActiveWorkbook.GetVstoObject();
    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.

    ms178788.alert_note(es-es,VS.90).gifNota:

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

private Microsoft.Office.Tools.Excel.Action displayAddress;

private void AddSmartTag()
{
    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.
    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);
}


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.

Fecha

Historial

Motivo

Julio de 2008

Se han añadido nuevos procedimientos para los complementos en el nivel de la aplicación.

Cambio de características de SP1.

Adiciones de comunidad

Mostrar: