Поделиться через


Практическое руководство. Добавление смарт-тегов в документы Word

Обновлен: Июль 2008

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office.

Проекты уровня документа

  • Word 2003

  • Word 2007

Проекты уровня приложения

  • Word 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

Для распознавания текста и предоставления пользователю доступа к действиям, связанным с распознанными терминами, можно использовать смарт-теги в документах Microsoft Office Word.

Начиная с Visual Studio 2008 с пакетом обновления 1 (SP1), для добавления смарт-тегов в любой открытый документ можно использовать надстройки уровня приложения. Код для создания и настройки смарт-тега для проектов на уровне документа и проектов на уровне приложения является идентичным, но существуют некоторые отличия в способе связывания смарт-тега с документами. Кроме того, смарт-теги имеют различные области в проектах на уровне документа и на уровне приложения.

В этом разделе описаны следующие задачи:

  • Добавление смарт-тега с помощью настройки уровня документа

  • Добавление смарт-тега с помощью надстройки уровня приложения

Чтобы выполнить смарт-тег, конечным пользователям должно быть предоставлено разрешение на выполнение смарт-тегов в приложениях Word или Excel. Дополнительные сведения см. в разделе Практическое руководство. Разрешение смарт-тегов в Word и Excel.

Добавление смарт-тега с помощью настройки уровня документа

Смарт-теги в настройках уровня документа распознаются только в документах, которые связаны с настройкой.

Добавление смарт-тега с помощью настройки уровня документа

  1. Создайте объект SmartTag и настройте его на определение поведения смарт-тега:

    • Чтобы указать текст, который необходимо распознать, воспользуйтесь свойством Terms или Expressions.

    • Чтобы задать действия, которые будут доступны пользователю при щелчке по смарт-тегу, добавьте один или несколько объектов Action в свойство Actions.

    Дополнительные сведения см. в разделе Архитектура смарт-тега.

  2. Добавьте SmartTag в свойство VstoSmartTags класса ThisDocument.

В следующем примере кода показано создание смарт-тега, распознающего слова term и recognize. Когда пользователь щелкает смарт-тег, он отображает положение первого и последнего символа распознанного слова. Для выполнения этого кода добавьте код в класс ThisDocument и вызовите метод AddSmartTag из обработчика событий 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());
}

Добавление смарт-тега с помощью надстройки уровня приложения

Начиная с пакета обновления 1 (SP1), можно добавлять смарт-тег с помощью надстройки уровня приложения. Можно задать функционирование смарт-тега только в определенном документе или во всех открытых документах (такой смарт-тег также называется смарт-тегом уровня приложения).

Добавление смарт-тега в определенный документ

  1. Создайте объект SmartTag и настройте его на определение поведения смарт-тега:

    • Чтобы указать текст, который необходимо распознать, воспользуйтесь свойством Terms или Expressions.

    • Чтобы задать действия, которые будут доступны пользователю при щелчке по смарт-тегу, добавьте один или несколько объектов Action в свойство Actions.

    Дополнительные сведения см. в разделе Архитектура смарт-тега.

  2. Воспользуйтесь методом GetVstoObject для создания ведущего элемента Document для документа, в котором необходимо разместить смарт-тег. Дополнительные сведения о создании ведущих элементов см. в разделе Расширение документов Word и книг Excel в надстройках уровня приложения во время выполнения.

    ms178787.alert_note(ru-ru,VS.90).gifПримечание.

    Если используется проект, созданный до установки пакета обновления 1, следует изменить проект до использования метода GetVstoObject. Дополнительные сведения см. в разделе Расширение документов Word и книг Excel в надстройках уровня приложения во время выполнения.

  3. Добавьте объект SmartTag в свойство VstoSmartTags класса Document.

Следующий пример кода создает в активном документе смарт-тег, который распознает слова term и recognize. Когда пользователь щелкает смарт-тег, он отображает положение первого и последнего символа распознанного слова. Для выполнения этого кода добавьте код в класс ThisAddIn и вызовите метод AddSmartTagToActiveDocument из обработчика событий 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());
}

Добавление смарт-тега, работающего во всех открытых документах

  1. Создайте объект SmartTag и настройте его на определение поведения смарт-тега:

    • Чтобы указать текст, который необходимо распознать, воспользуйтесь свойством Terms или Expressions.

    • Чтобы задать действия, которые будут доступны пользователю при щелчке по смарт-тегу, добавьте один или несколько объектов Action в свойство Actions.

    Дополнительные сведения см. в разделе Архитектура смарт-тега.

  2. Добавьте SmartTag в свойство VstoSmartTags класса ThisAddIn.

    ms178787.alert_note(ru-ru,VS.90).gifПримечание.

    Если используется проект, созданный до установки пакета обновления 1, следует изменить проект для создания свойства VstoSmartTags. Дополнительные сведения см. в разделе Практическое руководство. Добавление смарт-тегов уровня приложения в проекты, созданные до версии пакета обновлений 1..

В следующем примере кода показано создание смарт-тега, распознающего слова term и recognize. Когда пользователь щелкает смарт-тег, он отображает положение первого и последнего символа распознанного слова. Для выполнения этого кода добавьте код в класс ThisAddIn и вызовите метод AddSmartTag из обработчика событий 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());
}

Безопасность

Необходимо включить смарт-теги в Word. По умолчанию они не включены. Дополнительные сведения см. в разделе Практическое руководство. Разрешение смарт-тегов в Word и Excel.

См. также

Задачи

Практическое руководство. Разрешение смарт-тегов в Word и Excel

Практическое руководство. Добавление смарт-тегов в книги Excel

Практическое руководство. Добавление смарт-тегов уровня приложения в проекты, созданные до версии пакета обновлений 1.

Практическое руководство. Создание в приложении Word смарт-тегов с настраиваемыми распознавателями

Практическое руководство. Создание смарт-тегов с настраиваемыми распознавателями в Excel

Пошаговое руководство. Создание смарт-тега с помощью настройки уровня документа.

Пошаговое руководство. Создание смарт-тега с помощью надстройки уровня приложения

Основные понятия

Общие сведения о смарт-тегах

Архитектура смарт-тега

Архитектура смарт-тега

Разработка решений Office

Журнал изменений

Дата

Изменения

Причина

Июль 2008

Добавлены новые процедуры для надстроек уровня приложения.

Изменение функции SP1.