Partager via


Comment : ajouter des balises actives à des documents Word

Mise à jour : Juillet 2008

S'applique à

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

Projets au niveau du document

  • Word 2003

  • Word 2007

Projets au niveau de l'application

  • Word 2007

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

Vous pouvez ajouter des balises actives à vos documents Microsoft Office Word afin de reconnaître le texte et de permettre à l'utilisateur d'accéder aux actions en rapport avec les termes reconnus.

À partir de Visual Studio 2008 Service Pack 1 (SP1), vous pouvez utiliser des compléments d'application pour ajouter des balises actives à tout document ouvert. 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 documents. 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 d'une balise active à l'aide d'une personnalisation au niveau du document

  • Ajout d'une balise active à l'aide d'un complément 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 d'une balise active à l'aide d'une personnalisation au niveau du document

Les balises actives des personnalisations au niveau du document ne sont reconnues que dans le document 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 ThisDocument.

L'exemple de code suivant montre comment créer une balise active qui reconnaît les mots term et recognize. Lorsque l'utilisateur clique sur la balise active, les positions des caractères de début et de fin du mot reconnu s'affichent. Pour exécuter ce code, ajoutez-le à la classe ThisDocument et appelez la méthode AddSmartTag à partir du gestionnaire d'événements 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());
}

Ajout d'une balise active à l'aide d'un complément 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 document spécifique ou dans tous les documents ouverts (également appelée balise active d'application).

Pour ajouter une balise active dans un document 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 Document pour le document qui hébergera 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 Document.

L'exemple de code suivant montre comment créer, dans le document ouvert, une balise active qui reconnaît les mots term et recognize. Lorsque l'utilisateur clique sur la balise active, les positions des caractères de début et de fin du mot reconnu s'affichent. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn et appelez la méthode AddSmartTagToActiveDocument à partir du gestionnaire d'événements 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());
}

Pour ajouter une balise active qui fonctionne dans tous les documents 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 les mots term et recognize. Lorsque l'utilisateur clique sur la balise active, les positions des caractères de début et de fin du mot reconnu s'affichent. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn et appelez la méthode AddSmartTag à partir du gestionnaire d'événements 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());
}

Sécurité

Vous devez activer les balises actives dans Word. 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 aux classeurs Excel

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.