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

Este tutorial muestra cómo crear una etiqueta inteligente en una personalización de nivel de documento para Word. La etiqueta inteligente reconoce las cadenas de temperatura expresadas en grados Fahrenheit. La etiqueta inteligente incluye una acción que convierte el valor de temperatura en Celsius y reemplaza el texto reconocido por una cadena de temperatura Celsius con formato.

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

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

En este tutorial se muestran las tareas siguientes:

  • Crear una etiqueta inteligente que reconozca una expresión regular.

  • Crear una acción que recupere los datos de la etiqueta inteligente y modifique el texto reconocido de la etiqueta inteligente.

Nota

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

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

-

Una edición de Visual Studio 2010 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](bb398242\(v=vs.100\).md).
  • Word 2007.

  • .NET Framework 3.5.

Nota

Si la versión de destino es .NET Framework 4, debe escribir código diferente para crear etiquetas inteligentes y acciones. Para obtener más información, vea Arquitectura de las etiquetas inteligentes.

Crear un proyecto nuevo

El primer paso es crear el proyecto de documento de Word.

Para crear un nuevo proyecto

Visual Studio abre el nuevo documento de Word en el diseñador y agrega el proyecto My Smart Tag al Explorador de soluciones.

Configurar el proyecto

El proyecto necesita una referencia al archivo DLL de la etiqueta inteligente y también necesita usar expresiones regulares.

Para configurar el proyecto

  1. Haga clic en la opción Agregar referencia del menú Proyecto.

  2. En la pestaña .NET, seleccione Microsoft.Office.Interop.SmartTag y haga clic en Aceptar. Seleccione la versión 12.0.0.0 del ensamblado.

  3. En el Explorador de soluciones, haga clic con el botón secundario en ThisDocument.vb (en Visual Basic) o en ThisDocument.cs (en C#) y, a continuación, haga clic en Ver código.

  4. Agregue la línea siguiente de código a la parte superior del archivo.

    Imports System.Text.RegularExpressions
    
    using System.Text.RegularExpressions;
    

Crear la etiqueta inteligente

Para habilitar la etiqueta inteligente para buscar y convertir las cadenas de temperatura Fahrenheit, agregue una expresión regular a la lista de términos que reconoce la etiqueta inteligente y cree una acción que estará disponible cuando el usuario haga clic en la etiqueta.

Para crear la etiqueta inteligente

  1. Reemplace el controlador de eventos ThisDocument_Startup de la clase ThisDocument por el siguiente código. Este código crea un objeto SmartTag que representa la etiqueta inteligente, y agrega una expresión regular a la lista de términos que reconoce la etiqueta inteligente.

    WithEvents action1 As Microsoft.Office.Tools.Word.Action
    
    Private Sub ThisDocument_Startup(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Startup
    
        'Use the following line of code in projects that target the .NET Framework 4.
        Dim smartTag1 As Microsoft.Office.Tools.Word.SmartTag = _
            Globals.Factory.CreateSmartTag( _
           "www.microsoft.com/Demo#DemoSmartTag", _
           "Demonstration Smart Tag")
    
        'In projects that target the .NET Framework 3.5, use the following line of code.
        'Dim smartTag1 As New Microsoft.Office.Tools.Word.SmartTag( _
        '   "www.microsoft.com/Demo#DemoSmartTag", _
        '  "Demonstration Smart Tag")
    
        smartTag1.Expressions.Add( _
            New Regex("(?'number'[+-]?\b[0-9]+)?\s?(F|f)\b"))
    
    private Microsoft.Office.Tools.Word.Action action1;
    
    private void ThisDocument_Startup(object sender, System.EventArgs e)
    {
        // Use the following line of code in projects that target the .NET Framework 4.
        Microsoft.Office.Tools.Word.SmartTag smartTag1 =
            Globals.Factory.CreateSmartTag(
            "www.microsoft.com/Demo#DemoSmartTag",
            "Demonstration Smart Tag");
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        //Microsoft.Office.Tools.Word.SmartTag smartTag1 =
        //  new Microsoft.Office.Tools.Word.SmartTag(
        //  "www.microsoft.com/Demo#DemoSmartTag",
        //  "Demonstration Smart Tag");
    
        smartTag1.Expressions.Add(new Regex(
            @"(?'number'[+-]?\b[0-9]+)�?\s?(F|f)\b"));
    
  2. Cree una nueva Action y agréguela a la propiedad Actions de la etiqueta inteligente. Action representa un elemento en el que el usuario puede hacer clic en el menú de etiquetas inteligentes.

    'Use the following line of code in projects that target the .NET Framework 4.
    action1 = Globals.Factory.CreateAction( _
        "Convert to Celsius")
    
    'In projects that target the .NET Framework 3.5, use the following line of code.
    'action1 = New Microsoft.Office.Tools.Word.Action( _
    '    "Convert to Celsius")
    
    smartTag1.Actions = _
        New Microsoft.Office.Tools.Word.Action() {action1}
    
    
    // Use the following line of code in projects that target the .NET Framework 4.
    action1 = Globals.Factory.CreateAction(
        "Convert to Celsius");
    
    // In projects that target the .NET Framework 3.5, use the following line of code.
    //action1 = new Microsoft.Office.Tools.Word.Action(
    //    "Convert to Celsius");
    
    
    
    smartTag1.Actions = new
        Microsoft.Office.Tools.Word.Action[] {action1};
    
  3. Asocie la etiqueta inteligente al documento agregando SmartTag a la propiedad VstoSmartTags. En C#, asocie un controlador de eventos al evento Click de la acción.

        Me.VstoSmartTags.Add(smartTag1)
    End Sub
    
        this.VstoSmartTags.Add(smartTag1);
    
        action1.Click += new
            Microsoft.Office.Tools.Word.ActionClickEventHandler(
            action1_Click);
    }
    

Crear un controlador de eventos para la acción

El controlador de eventos recupera el valor de temperatura Fahrenheit de la clave number, que está en la bolsa de propiedades de la etiqueta inteligente. El controlador de eventos convierte después el valor de temperatura Fahrenheit en Celsius y reemplaza la cadena reconocida.

En este ejemplo, la clave number identifica un grupo capturado de la expresión regular asignada a la etiqueta inteligente. Para obtener más información sobre los contenedores de propiedades y las expresiones regulares de las etiquetas inteligentes, vea Arquitectura de las etiquetas inteligentes.

Para crear el controlador de eventos

  • Copie el código siguiente a la clase ThisDocument.

    Private Sub action1_Click(ByVal sender As Object, _
        ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _
        Handles action1.Click
    
        Dim value As String = e.Properties.Read("number")
        Dim fahrenheit As Double = System.Convert.ToDouble(value)
        Dim celsius As Integer = Fix(fahrenheit - 32) * 5 / 9
        e.Range.Text = celsius.ToString() + "C"
    End Sub
    
    void action1_Click(object sender,
        Microsoft.Office.Tools.Word.ActionEventArgs e)
    {
        string value = e.Properties.get_Read("number");
        double fahrenheit = System.Convert.ToDouble(value);
        int celsius = (int)(fahrenheit - 32) * 5 / 9;
        e.Range.Text = celsius.ToString() + "�C";
    }
    

Probar la aplicación

Ahora puede probar el documento para asegurarse de que la etiqueta inteligente convierte las temperaturas Fahrenheit en Celsius.

Para probar el libro

  1. En Word, habilite las etiquetas inteligentes.

    Para obtener más información, vea Cómo: Habilitar las etiquetas inteligentes en Word y en Excel.

  2. Presione F5 para ejecutar el proyecto.

  3. Escriba una cadena que se ajuste a la expresión regular agregada a la etiqueta inteligente, como 60F, 60° F o 60 F.

    Nota

    Para escribir el símbolo de un grado (°), presione ALT y escriba 248.

  4. Haga clic en el icono de la etiqueta inteligente que aparece sobre la cadena reconocida y, a continuación, haga clic en Convertir en Celsius.

  5. Confirme que la cadena original se reemplaza por una nueva cadena que contiene la temperatura en Celsius.

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: Agregar etiquetas inteligentes a libros de Excel

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 un complemento de nivel de aplicación

Conceptos

Arquitectura de las etiquetas inteligentes

Otros recursos

Información general sobre etiquetas inteligentes