Gewusst wie: Hinzufügen von Smarttags zu Excel-Arbeitsmappen
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.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für Excel 2007. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
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 finden Sie unter Gewusst wie: Aktivieren von Smarttags in Word und Excel.
Eine Videoversion dieses Themas finden Sie unter How Do I: Add Smart Tags to Excel Workbooks.
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
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 finden Sie unter Smarttagarchitektur.
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 der ThisWorkbook-Klasse hinzu, und rufen Sie die AddSmartTag-Methode des ThisWorkbook_Startup-Ereignishandlers auf.
Tipp
Das folgende Beispiel funktioniert in Projekten mit der Zielversion .NET Framework 4. Weitere Informationen zur Verwendung dieses Beispiels in Projekten mit der Zielversion .NET Framework 3.5 finden Sie in den Kommentaren im Code.
WithEvents displayAddress As Microsoft.Office.Tools.Excel.Action
Private Sub AddSmartTag()
' Create the smart tag for .NET Framework 4 projects.
Dim smartTagDemo As Microsoft.Office.Tools.Excel.SmartTag = _
Globals.Factory.CreateSmartTag(
"www.microsoft.com/Demo#DemoSmartTag",
"Demonstration Smart Tag")
' For .NET Framework 3.5 projects, use the following code to create the smart tag.
' 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 for .NET Framework 4 projects.
displayAddress = Globals.Factory.CreateAction("To be replaced")
' For .NET Framework 3.5 projects, use the following code to 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 DisplayAddress_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()
{
// Create the smart tag for .NET Framework 4 projects.
Microsoft.Office.Tools.Excel.SmartTag smartTagDemo =
Globals.Factory.CreateSmartTag(
"www.microsoft.com/Demo#DemoSmartTag",
"Demonstration Smart Tag");
// For .NET Framework 3.5 projects, use the following code to create the smart tag.
// 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 for .NET Framework 4 projects.
displayAddress = Globals.Factory.CreateAction("To be replaced");
// For .NET Framework 3.5 projects, use the following code to 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
Wenn Sie ein Smarttag mithilfe eines Add-Ins auf Anwendungsebene hinzufügen, können Sie 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
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 finden Sie unter Smarttagarchitektur.
Verwenden Sie die GetVstoObject-Methode, um ein Microsoft.Office.Tools.Excel.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.
Fügen Sie SmartTag der VstoSmartTags-Eigenschaft von Microsoft.Office.Tools.Excel.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, rufen Sie die AddSmartTagToWorkbook-Methode des ThisAddIn_Startup-Ereignishandlers auf, und übergeben Sie eine Microsoft.Office.Interop.Excel.Workbook an AddSmartTagToWorkbook.
Tipp
Das folgende Beispiel funktioniert in Projekten mit der Zielversion .NET Framework 4. Weitere Informationen zur Verwendung dieses Beispiels in Projekten mit der Zielversion .NET Framework 3.5 finden Sie in den Kommentaren im Code.
WithEvents displayAddress As Microsoft.Office.Tools.Excel.Action
Private Sub AddSmartTagToWorkbook(ByVal workbook As Excel.Workbook)
' Create a smart tag for .NET Framework 3.5 projects.
' Dim smartTagDemo As New _
' Microsoft.Office.Tools.Excel.SmartTag( _
' "www.microsoft.com/Demo#DemoSmartTag", _
' "Demonstration Smart Tag")
' Create a smart tag for .NET Framework 4 projects.
Dim smartTagDemo As SmartTag = Globals.Factory.CreateSmartTag(
"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 for .NET Framework 3.5 projects.
' displayAddress = New Microsoft.Office.Tools.Excel.Action( _
' "To be replaced")
' Create the action for .NET Framework 4 projects.
displayAddress = Globals.Factory.CreateAction("To be replaced")
' Add the action to the smart tag.
smartTagDemo.Actions = New Microsoft.Office.Tools.Excel.Action() { _
displayAddress}
' Get the host item for the workbook in .NET Framework 3.5 projects.
' Dim vstoWorkbook As Microsoft.Office.Tools.Excel.Workbook = _
' workbook.GetVstoObject()
' Get the host item for the workbook in .NET Framework 4 projects.
Dim vstoWorkbook As Microsoft.Office.Tools.Excel.Workbook = _
Globals.Factory.GetVstoObject(workbook)
' Add the smart tag to the active workbook.
vstoWorkbook.VstoSmartTags.Add(smartTagDemo)
End Sub
Private Sub DisplayAddress_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 AddSmartTagToWorkbook(Excel.Workbook workbook)
{
Microsoft.Office.Tools.Excel.SmartTag smartTagDemo =
// Create a smart tag for .NET Framework 3.5 projects.
// new Microsoft.Office.Tools.Excel.SmartTag(
// "www.microsoft.com/Demo#DemoSmartTag",
// "Demonstration Smart Tag");
// Create a smart tag for .NET Framework 4 projects.
Globals.Factory.CreateSmartTag(
"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 for .NET Framework 3.5 projects.
// displayAddress = new Microsoft.Office.Tools.Excel.Action(
// "To be replaced");
// Create the action for .NET Framework 4 projects.
displayAddress = Globals.Factory.CreateAction("To be replaced");
// Add the action to the smart tag.
smartTagDemo.Actions = new
Microsoft.Office.Tools.Excel.Action[] { displayAddress };
// Get the host item for the workbook in .NET Framework 3.5 projects.
// Microsoft.Office.Tools.Excel.Workbook vstoWorkbook =
// workbook.GetVstoObject();
// Get the host item for the workbook in .NET Framework 4 projects.
Microsoft.Office.Tools.Excel.Workbook vstoWorkbook =
Globals.Factory.GetVstoObject(workbook);
// Add the smart tag to the active workbook.
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
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 finden Sie unter Smarttagarchitektur.
Fügen Sie das SmartTag der VstoSmartTags-Eigenschaft der ThisAddIn-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 ThisAddIn-Klasse hinzu, und rufen Sie die AddSmartTag-Methode des ThisAddIn_Startup-Ereignishandlers auf.
Tipp
Das folgende Beispiel funktioniert in Projekten mit der Zielversion .NET Framework 4. Weitere Informationen zur Verwendung dieses Beispiels in Projekten mit der Zielversion .NET Framework 3.5 finden Sie in den Kommentaren im Code.
WithEvents displayAddress As Microsoft.Office.Tools.Excel.Action
Private Sub AddSmartTag()
' Create the smart tag for .NET Framework 4 projects.
Dim smartTagDemo As Microsoft.Office.Tools.Excel.SmartTag = _
Globals.Factory.CreateSmartTag(
"www.microsoft.com/Demo#DemoSmartTag",
"Demonstration Smart Tag")
' For .NET Framework 3.5 projects, use the following code to create the smart tag.
' 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 for .NET Framework 4 projects.
displayAddress = Globals.Factory.CreateAction("To be replaced")
' For .NET Framework 3.5 projects, use the following code to 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 DisplayAddress_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()
{
// Create the smart tag for .NET Framework 4 projects.
Microsoft.Office.Tools.Excel.SmartTag smartTagDemo =
Globals.Factory.CreateSmartTag(
"www.microsoft.com/Demo#DemoSmartTag",
"Demonstration Smart Tag");
// For .NET Framework 3.5 projects, use the following code to create the smart tag.
// 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 for .NET Framework 4 projects.
displayAddress = Globals.Factory.CreateAction("To be replaced");
// For .NET Framework 3.5 projects, use the following code to 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 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
Exemplarische Vorgehensweise: Erstellen eines Smarttags mit einer Anpassung auf Dokumentebene
Exemplarische Vorgehensweise: Erstellen eines Smarttags mit einem Add-In auf Anwendungsebene
Konzepte
Weitere Ressourcen
Gewusst wie: Hinzufügen von Smarttags zu Excel-Arbeitsmappen