Gewusst wie: Hinzufügen von Smarttags zu Excel-Arbeitsmappen

Aktualisiert: Juli 2008

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekte auf Dokumentebene

  • Excel 2003

  • Excel 2007

Projekte auf Anwendungsebene

  • Excel 2007

Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Sie können Smarttags für Microsoft Office Excel-Arbeitsmappe hinzufügen, um Text zu erkennen und Benutzern Zugriff auf Aktionen zu gewähren, die mit den erkannten Begriffen verknüpft sind. Der Code, den Sie zum Erstellen und Konfigurieren eines Smarttags schreiben, ist für Projekte auf Dokumentebene und Projekte auf Anwendungsebene gleich. Allerdings gibt es einige Unterschiede bei der Verknüpfung eines Smarttag mit Arbeitsmappen. Smarttags haben in Projekten auf Dokumentebene und in Projekten auf Anwendungsebene auch einen unterschiedlichen Gültigkeitsbereich.

In diesem Thema werden die folgenden Aufgaben erläutert:

  • Hinzufügen von Smarttags in Anpassungen auf Dokumentebene

  • Hinzufügen von Smarttags in Add-Ins auf Anwendungsebene

Wenn Endbenutzer ein Smarttag ausführen möchten, müssen Smarttags in Word oder Excel aktiviert sein. Weitere Informationen hierzu finden Sie unter Gewusst wie: Aktivieren von Smarttags in Word und Excel.

Hinzufügen von Smarttags in Anpassungen auf Dokumentebene

Wenn Sie ein Smarttag mit einer Anpassung auf Dokumentebene hinzufügen, wird das Smarttag nur in der Arbeitsmappe erkannt, die mit der Anpassung verknüpft ist.

So fügen Sie ein Smarttag mit einer Anpassung auf Dokumentebene hinzu

  1. Erstellen Sie ein SmartTag-Objekt, und konfigurieren Sie dieses Objekt, um das Verhalten des Smarttags zu definieren:

    • Um den Text anzugeben, der erkannt werden soll, verwenden Sie die Terms-Eigenschaft oder die Expressions-Eigenschaft.

    • Um die Aktionen im Smarttag zu definieren, auf die der Benutzer klicken kann, fügen Sie ein oder mehrere Action-Objekte zur Actions-Eigenschaft hinzu.

    Weitere Informationen hierzu finden Sie unter Smarttagarchitektur.

  2. Fügen Sie das SmartTag zu der VstoSmartTags-Eigenschaft der ThisWorkbook-Klasse hinzu.

Im folgenden Codebeispiel wird ein Smarttag erstellt, welches das Wort sale und den regulären Ausdruck [I|i]ssue\s\d{5,6} erkennt. Wenn der Benutzer sale oder eine Zeichenfolge eingibt, die dem regulären Ausdruck entspricht (z. B. issue 12345), und dann auf das Smarttag klickt, wird die Zellenposition des erkannten Texts angezeigt. Um diesen Code auszuführen, fügen Sie den Code zur ThisWorkbook-Klasse hinzu, und rufen Sie die AddSmartTag-Methode des ThisWorkbook_Startup-Ereignishandlers auf.

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);
}

Hinzufügen von Smarttags in Add-Ins auf Anwendungsebene

Ab SP1 können Sie ein Smarttag mit einem Add-In auf Anwendungsebene hinzufügen. Sie können angeben, ob das Smarttag nur in einer bestimmten Arbeitsmappe oder in allen geöffneten Arbeitsmappen funktionieren soll. Smarttags, die in allen geöffneten Arbeitsmappen ausgeführt werden, werden als Smarttags auf Anwendungsebene bezeichnet.

So fügen Sie ein Smarttag einer bestimmten Arbeitsmappe hinzu

  1. Erstellen Sie ein SmartTag-Objekt, und konfigurieren Sie dieses Objekt, um das Verhalten des Smarttags zu definieren:

    • Um den Text anzugeben, der erkannt werden soll, verwenden Sie die Terms-Eigenschaft oder die Expressions-Eigenschaft.

    • Um die Aktionen im Smarttag zu definieren, auf die der Benutzer klicken kann, fügen Sie ein oder mehrere Action-Objekte zur Actions-Eigenschaft hinzu.

    Weitere Informationen hierzu finden Sie unter Smarttagarchitektur.

  2. Verwenden Sie die GetVstoObject-Methode, um ein Workbook-Hostelement für die Arbeitsmappe zu erstellen, die das Smarttag hosten soll. Weitere Informationen zum Erstellen von Hostelementen finden Sie unter Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit.

    Hinweis:

    Wenn Sie ein Projekt verwenden, das Sie vor der Installation von SP1 erstellt haben, müssen Sie das Projekt ändern, bevor Sie die GetVstoObject-Methode verwenden können. Weitere Informationen hierzu finden Sie unter Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit.

  3. Fügen Sie das SmartTag zu der VstoSmartTags-Eigenschaft des Workbook hinzu.

Im folgenden Codebeispiel wird ein Smarttag erstellt, welches das Wort sale und den regulären Ausdruck [I|i]ssue\s\d{5,6} erkennt. Wenn der Benutzer sale oder eine Zeichenfolge eingibt, die dem regulären Ausdruck entspricht (z. B. issue 12345), und dann auf das Smarttag klickt, wird die Zellenposition des erkannten Texts angezeigt. Um diesen Code auszuführen, fügen Sie den Code zur ThisAddIn-Klasse hinzu, und rufen Sie die AddSmartTagToActiveWorkbook-Methode des ThisAddIn_Startup-Ereignishandlers auf.

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);
}

So fügen Sie ein Smarttag hinzu, das in allen geöffneten Arbeitsmappen funktioniert

  1. Erstellen Sie ein SmartTag-Objekt, und konfigurieren Sie dieses Objekt, um das Verhalten des Smarttags zu definieren:

    • Um den Text anzugeben, der erkannt werden soll, verwenden Sie die Terms-Eigenschaft oder die Expressions-Eigenschaft.

    • Um die Aktionen im Smarttag zu definieren, auf die der Benutzer klicken kann, fügen Sie ein oder mehrere Action-Objekte zur Actions-Eigenschaft hinzu.

    Weitere Informationen hierzu finden Sie unter Smarttagarchitektur.

  2. Fügen Sie das SmartTag zu der VstoSmartTags-Eigenschaft der ThisAddIn-Klasse hinzu.

    Hinweis:

    Wenn Sie ein Projekt verwenden, das vor der Installation von SP1 erstellt wurde, müssen Sie das Projekt ändern, um die VstoSmartTags-Eigenschaft zu generieren. Weitere Informationen hierzu finden Sie unter Gewusst wie: Hinzufügen von Smarttags auf Anwendungsebene in Projekten, die vor SP1 erstellt wurden.

Im folgenden Codebeispiel wird ein Smarttag erstellt, welches das Wort sale und den regulären Ausdruck [I|i]ssue\s\d{5,6} erkennt. Wenn der Benutzer sale oder eine Zeichenfolge eingibt, die dem regulären Ausdruck entspricht (z. B. issue 12345), und dann auf das Smarttag klickt, wird die Zellenposition des erkannten Texts angezeigt. Um diesen Code auszuführen, fügen Sie den Code zur ThisAddIn-Klasse hinzu, und rufen Sie die AddSmartTag-Methode des ThisAddIn_Startup-Ereignishandlers auf.

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);
}

Sicherheit

Sie müssen Smarttags in Excel aktivieren. Standardmäßig werden Smarttags nicht aktiviert. Weitere Informationen hierzu finden Sie unter Gewusst wie: Aktivieren von Smarttags in Word und Excel.

Siehe auch

Aufgaben

Gewusst wie: Aktivieren von Smarttags in Word und Excel

Gewusst wie: Hinzufügen von Smarttags zu Word-Dokumenten

Gewusst wie: Hinzufügen von Smarttags auf Anwendungsebene in Projekten, die vor SP1 erstellt wurden

Gewusst wie: Erstellen von Smarttags mit benutzerdefinierten Erkennungen in Word

Gewusst wie: Erstellen von Smarttags mit benutzerdefinierten Erkennungen in Excel

Exemplarische Vorgehensweise: Erstellen eines Smarttags mit einer Anpassung auf Dokumentebene

Exemplarische Vorgehensweise: Erstellen eines Smarttags mit einem Add-In auf Anwendungsebene

Konzepte

Übersicht über Smarttags

Smarttagarchitektur

Smarttagarchitektur

Entwickeln von Office-Projektmappen

Änderungsverlauf

Date

Versionsgeschichte

Grund

Juli 2008

Neue Prozeduren für Add-Ins auf Anwendungsebene wurden hinzugefügt.

SP1-Featureänderung.