Comment : ajouter des balises actives aux classeurs Excel

Mise à jour : Juillet 2008

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions spécifiés de Microsoft Office.

Projets au niveau du document

  • Excel 2003

  • Excel 2007

Projets au niveau de l'application

  • Excel 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Vous pouvez ajouter des balises actives à vos classeurs Microsoft Office Excel afin de reconnaître le texte et de permettre à l'utilisateur d'accéder aux actions en rapport avec les termes reconnus. Le code que vous écrivez pour créer et configurer une balise active est le même pour les projets au niveau du document et de l'application, mais il existe quelques différences dans la façon d'associer une balise active à des classeurs. Les balises actives ont également une portée différente selon qu'elles se trouvent dans un projet au niveau du document ou de l'application.

Cette rubrique décrit les tâches suivantes :

  • Ajout de balises actives dans des personnalisations au niveau du document

  • Ajout de balises actives dans des compléments d'application

Pour exécuter une balise active, les balises actives doivent être activées dans Word ou Excel. Pour plus d'informations, consultez Comment : activer des balises actives dans Word et Excel.

Ajout de balises actives dans des personnalisations au niveau du document

Lorsque vous ajoutez une balise active par le biais d'une personnalisation au niveau du document, la balise active n'est reconnue que dans le classeur associé à la personnalisation.

Pour ajouter une balise active à l'aide d'une personnalisation au niveau du document

  1. Créez un objet SmartTag et configurez-le de façon à définir le comportement de la balise active :

    • Pour spécifier le texte que vous souhaitez reconnaître, utilisez les propriétés Terms ou Expressions.

    • Pour définir les actions que les utilisateurs peuvent déclencher en cliquant sur la balise active, ajoutez un ou plusieurs objets Action à la propriété Actions.

    Pour plus d'informations, consultez Architecture des balises actives.

  2. Ajoutez SmartTag à la propriété VstoSmartTags de la classe ThisWorkbook.

L'exemple de code suivant montre comment créer une balise active qui reconnaît le mot sale et l'expression régulière [I|i]ssue\s\d{5,6}. Lorsque l'utilisateur tape vente ou une chaîne qui correspond à l'expression régulière (par exemple problème 12345), puis clique sur la balise active, l'emplacement de la cellule contenant le texte reconnu s'affiche. Pour exécuter ce code, ajoutez le code à la classe ThisWorkbook et appelez la méthode AddSmartTag à partir du gestionnaire d'événements ThisWorkbook_Startup.

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

Private Sub AddSmartTag()
    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.
    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 OpenMessageBox_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()
{
    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);
}

Ajout de balises actives dans des compléments d'application

À partir du SP1, vous pouvez ajouter une balise active à l'aide d'un complément d'application. Vous pouvez spécifier si la balise active doit fonctionner uniquement dans un classeur spécifique, ou dans tous les classeurs ouverts. Les balises actives qui s'exécutent dans tous les classeurs ouverts sont appelées balises actives d'application.

Pour ajouter une balise active dans un classeur spécifique.

  1. Créez un objet SmartTag et configurez-le de façon à définir le comportement de la balise active :

    • Pour spécifier le texte que vous souhaitez reconnaître, utilisez les propriétés Terms ou Expressions.

    • Pour définir les actions que les utilisateurs peuvent déclencher en cliquant sur la balise active, ajoutez un ou plusieurs objets Action à la propriété Actions.

    Pour plus d'informations, consultez Architecture des balises actives.

  2. Utilisez la méthode GetVstoObject pour créer un élément hôte Workbook pour le classeur qui doit héberger la balise active. Pour plus d'informations sur la création d'éléments hôtes, consultez Extension de documents Word et de classeurs Excel dans des compléments d'application au moment de l'exécution..

    Remarque :

    Si vous utilisez un projet que vous avez créé avant d'installer le SP1, vous devez le modifier avant de pouvoir employer la méthode GetVstoObject. Pour plus d'informations, consultez Extension de documents Word et de classeurs Excel dans des compléments d'application au moment de l'exécution..

  3. Ajoutez SmartTag à la propriété VstoSmartTags de Workbook.

L'exemple de code suivant montre comment créer une balise active qui reconnaît le mot sale et l'expression régulière [I|i]ssue\s\d{5,6}. Lorsque l'utilisateur tape vente ou une chaîne qui correspond à l'expression régulière (par exemple problème 12345), puis clique sur la balise active, l'emplacement de la cellule contenant le texte reconnu s'affiche. Pour exécuter ce code, ajoutez le code à la classe ThisAddIn et appelez la méthode AddSmartTagToActiveWorkbook à partir du gestionnaire d'événements ThisAddIn_Startup.

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

Private Sub AddSmartTagToActiveWorkbook()
    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.
    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.
    Dim vstoWorkbook As Microsoft.Office.Tools.Excel.Workbook = _
        Me.Application.ActiveWorkbook.GetVstoObject()
    vstoWorkbook.VstoSmartTags.Add(smartTagDemo)
End Sub

Private Sub OpenMessageBox_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 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);
}

Pour ajouter une balise active qui fonctionne dans tous les classeurs ouverts

  1. Créez un objet SmartTag et configurez-le de façon à définir le comportement de la balise active :

    • Pour spécifier le texte que vous souhaitez reconnaître, utilisez les propriétés Terms ou Expressions.

    • Pour définir les actions que les utilisateurs peuvent déclencher en cliquant sur la balise active, ajoutez un ou plusieurs objets Action à la propriété Actions.

    Pour plus d'informations, consultez Architecture des balises actives.

  2. Ajoutez SmartTag à la propriété VstoSmartTags de la classe ThisAddIn.

    Remarque :

    Si vous utilisez un projet que vous avez créé avant d'installer le SP1, vous devez le modifier avant de pouvoir générer la propriété VstoSmartTags. Pour plus d'informations, consultez Comment : ajouter des balises actives d'application à des projets créés avant SP1.

L'exemple de code suivant montre comment créer une balise active qui reconnaît le mot sale et l'expression régulière [I|i]ssue\s\d{5,6}. Lorsque l'utilisateur tape vente ou une chaîne qui correspond à l'expression régulière (par exemple problème 12345), puis clique sur la balise active, l'emplacement de la cellule contenant le texte reconnu s'affiche. Pour exécuter ce code, ajoutez le code à la classe ThisAddIn et appelez la méthode AddSmartTag à partir du gestionnaire d'événements ThisAddIn_Startup.

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

Private Sub AddSmartTag()
    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.
    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 OpenMessageBox_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()
{
    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);
}

Sécurité

Vous devez activer les balises actives dans Excel. Par défaut, elles sont désactivées. Pour plus d'informations, consultez Comment : activer des balises actives dans Word et Excel.

Voir aussi

Tâches

Comment : activer des balises actives dans Word et Excel

Comment : ajouter des balises actives à des documents Word

Comment : ajouter des balises actives d'application à des projets créés avant SP1

Comment : créer des balises actives avec des modules de reconnaissance personnalisés dans Word

Comment : créer des balises actives avec des modules de reconnaissance personnalisés dans Excel

Procédure pas à pas : création d'une balise active à l'aide d'une personnalisation au niveau du document

Procédure pas à pas : création d'une balise active à l'aide d'un complément d'application

Concepts

Vue d'ensemble des balises actives

Architecture des balises actives

Architecture des balises actives

Développement de solutions Office

Historique des modifications

Date

Historique

Raison

Juillet 2008

Nouvelles procédures ajoutées pour les compléments d'application.

Modifications de fonctionnalités dans le SP1.