Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit

Sie können Word-Dokumente und Excel-Arbeitsmappen wie folgt mithilfe eines Add-Ins auf Anwendungsebene anpassen:

  • Hinzufügen von verwalteten Steuerelementen zu geöffneten Dokumenten oder Arbeitsblättern.

  • Erstellen von Smarttags, die in einem bestimmten Dokument oder einer bestimmten Arbeitsmappe erkannt werden.

    Tipp

    Smarttags sind in Excel 2010 und Word 2010 veraltet. Weitere Informationen finden Sie unter Übersicht über Smarttags.

  • Konvertieren eines vorhandenen Listenobjekts in einem Excel-Arbeitsblatt in ein erweitertes ListObject, das Ereignisse verfügbar macht und mit dem Datenbindungsmodell von Windows Forms an Daten gebunden werden kann.

  • Zugreifen auf Ereignisse auf Anwendungsebene, die von Word und Excel für bestimmte Dokumente, Arbeitsmappen und Arbeitsblätter verfügbar gemacht werden.

Um diese Funktionen verwenden zu können, erstellen Sie zur Laufzeit ein Objekt, mit dem das Dokument oder die Arbeitsmappe erweitert wird.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Anwendungsebene für die folgenden Anwendungen: Excel 2007 und Excel 2010, Word 2007 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

Erstellen von erweiterten Objekten in Add-Ins

Erweiterte Objekte sind Instanzen von Typen, die von der Visual Studio Tools for Office-Laufzeit bereitgestellt werden, die Objekten Funktionalität hinzufügen, die systemeigen im Word- oder Excel-Objektmodell vorhanden sind (diese werden als systemeigene Office-Objekte bezeichnet). Um ein erweitertes Objekt für ein Word-Objekt oder ein Excel-Objekt zu generieren, verwenden Sie die GetVstoObject-Methode. Beim ersten Aufruf der GetVstoObject-Methode für ein angegebenes Word- oder Excel-Objekt, wird ein neues Objekt zurückgegeben, das das angegebene Objekt erweitert. Jedes Mal, wenn Sie die Methode aufrufen und das gleiche Word- oder Excel-Objekt angeben, wird das gleiche erweiterte Objekt zurückgegeben.

Der Typ des erweiterten Objekts hat denselben Namen wie der Typ des systemeigenen Office-Objekts, ist jedoch im Microsoft.Office.Tools.Excel-Namespace oder im Microsoft.Office.Tools.Word-Namespace definiert. Wenn Sie z. B. die GetVstoObject-Methode aufrufen, um ein Microsoft.Office.Interop.Word.Document-Objekt zu erweitern, gibt die Methode ein Microsoft.Office.Tools.Word.Document-Objekt zurück.

Auf welche Art Sie auf die GetVstoObject-Methode zugreifen, hängt davon ab, auf welche Version von .NET Framework das Projekt ausgerichtet ist:

Die GetVstoObject-Methoden sind in erster Linie dazu vorgesehen, in Projekten auf Anwendungsebene verwendet zu werden. Sie können diese Methoden auch in Projekten auf Dokumentebene verwenden. Sie zeigen dann jedoch ein anderes Verhalten und haben weniger Anwendungen. Weitere Informationen finden Sie unter Abrufen von erweiterten Objekten aus systemeigenen Office-Objekten in Anpassungen auf Dokumentebene.

Um zu ermitteln, ob für ein erweitertes Objekt bereits ein bestimmtes systemeigenes Office-Objekt generiert wurde, verwenden Sie die HasVstoObject-Methode. Weitere Informationen finden Sie unter Ermitteln, ob ein Office-Objekt erweitert wurde.

Tipp

Sie müssen Ihr Projekt ändern, um die GetVstoObject-Methode und die HasVstoObject-Methode in einer anderen Codedatei als "ThisAddIn.cs" und "ThisAddIn.vb" oder in einem Projekt zu verwenden, das auf .NET Framework 3.5 abzielt. Weitere Informationen finden Sie unter Konfigurieren des Projekts zur Verwendung der 'GetVstoObject'-Methode und der 'HasVstoObject'-Methode.

Erstellen von Hostelementen

Wenn Sie GetVstoObject verwenden, um ein Objekt auf Dokumentebene zu erweitern (d. h. Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet oder Microsoft.Office.Interop.Word.Document), wird das zurückgegebene Objekt als Hostelement bezeichnet. Ein Hostelement ist ein Typ, der andere Objekte enthalten kann, einschließlich anderer erweiterter Objekte und Steuerelemente. Es ähnelt dem entsprechenden Typ in der primären Interopassembly von Word oder Excel, verfügt jedoch über zusätzliche Features. Weitere Informationen zu Hostelementen finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.

Nachdem Sie ein Hostelement erstellt haben, können Sie es verwenden, um dem Dokument, der Arbeitsmappe oder dem Arbeitsblatt Smarttags oder verwaltete Steuerelemente hinzuzufügen. Weitere Informationen finden Sie unter Hinzufügen von Smarttags zu Dokumenten und Arbeitsmappen und Hinzufügen von verwalteten Steuerelementen zu Dokumenten und Arbeitsblättern.

So generieren Sie ein Hostelement für ein Word-Dokument

  • Im folgenden Codebeispiel wird veranschaulicht, wie ein Hostelement für das aktive Dokument in einem Projekt generiert wird, das auf .NET Framework 4 ausgerichtet ist.

    If Globals.ThisAddIn.Application.Documents.Count > 0 Then
        Dim NativeDocument As Microsoft.Office.Interop.Word.Document = _
            Globals.ThisAddIn.Application.ActiveDocument
        Dim VstoDocument As Microsoft.Office.Tools.Word.Document = _
            Globals.Factory.GetVstoObject(NativeDocument)
    End If
    
    if (Globals.ThisAddIn.Application.Documents.Count > 0)
    {
        Microsoft.Office.Interop.Word.Document nativeDocument =
            Globals.ThisAddIn.Application.ActiveDocument;
        Microsoft.Office.Tools.Word.Document vstoDocument =
            Globals.Factory.GetVstoObject(nativeDocument);
    }
    
  • Im folgenden Codebeispiel wird die gleiche Aufgabe in einem Projekt dargestellt, das auf .NET Framework 3.5 ausgerichtet ist.

    If Globals.ThisAddIn.Application.Documents.Count > 0 Then
        Dim NativeDocument As Microsoft.Office.Interop.Word.Document =
            Globals.ThisAddIn.Application.ActiveDocument
        If NativeDocument IsNot Nothing Then
            Dim vstoDocument As Microsoft.Office.Tools.Word.Document =
                NativeDocument.GetVstoObject()
        End If
    End If
    
    if (Globals.ThisAddIn.Application.Documents.Count > 0)
    {
        Microsoft.Office.Interop.Word.Document nativeDocument =
            Globals.ThisAddIn.Application.ActiveDocument;
        Microsoft.Office.Tools.Word.Document vstoDocument =
            nativeDocument.GetVstoObject();
    }
    

So generieren Sie ein Hostelement für eine Excel-Arbeitsmappe

  • Im folgenden Codebeispiel wird veranschaulicht, wie ein Hostelement für die aktive Arbeitsmappe in einem Projekt generiert wird, das auf .NET Framework 4 ausgerichtet ist.

    Dim NativeWorkbook As Microsoft.Office.Interop.Excel.Workbook =
        Globals.ThisAddIn.Application.ActiveWorkbook
    If NativeWorkbook IsNot Nothing Then
        Dim vstoWorkbook As Microsoft.Office.Tools.Excel.Workbook =
            Globals.Factory.GetVstoObject(NativeWorkbook)
    End If
    
    Microsoft.Office.Interop.Excel.Workbook nativeWorkbook = 
        Globals.ThisAddIn.Application.ActiveWorkbook;
    if (nativeWorkbook != null)
    {
        Microsoft.Office.Tools.Excel.Workbook vstoWorkbook = 
            Globals.Factory.GetVstoObject(nativeWorkbook);
    }
    
  • Im folgenden Codebeispiel wird die gleiche Aufgabe in einem Projekt dargestellt, das auf .NET Framework 3.5 ausgerichtet ist.

    Dim NativeWorkbook As Microsoft.Office.Interop.Excel.Workbook = _
        Globals.ThisAddIn.Application.ActiveWorkbook
    
    If NativeWorkbook IsNot Nothing Then
        Dim VstoWorkbook As Microsoft.Office.Tools.Excel.Workbook = _
            NativeWorkbook.GetVstoObject()
    End If
    
    Microsoft.Office.Interop.Excel.Workbook nativeWorkbook =
        Globals.ThisAddIn.Application.ActiveWorkbook;
    
    if (nativeWorkbook != null)
    {
        Microsoft.Office.Tools.Excel.Workbook vstoWorkbook =
            nativeWorkbook.GetVstoObject();
    }
    

So generieren Sie ein Hostelement für ein Excel-Arbeitsblatt

  • Im folgenden Codebeispiel wird veranschaulicht, wie ein Hostelement für das aktive Arbeitsblatt in einem Projekt generiert wird, das auf .NET Framework 4 ausgerichtet ist.

    Dim NativeWorksheet As Microsoft.Office.Interop.Excel.Worksheet =
        Globals.ThisAddIn.Application.ActiveSheet
    If NativeWorksheet IsNot Nothing Then
        Dim vstoSheet As Microsoft.Office.Tools.Excel.Worksheet =
            Globals.Factory.GetVstoObject(NativeWorksheet)
    End If
    
    Microsoft.Office.Interop.Excel.Worksheet nativeWorksheet =
        Globals.ThisAddIn.Application.ActiveSheet;
    if (nativeWorksheet != null)
    {
        Microsoft.Office.Tools.Excel.Worksheet vstoSheet = 
            Globals.Factory.GetVstoObject(nativeWorksheet);
    }
    
  • Im folgenden Codebeispiel wird die gleiche Aufgabe in einem Projekt dargestellt, das auf .NET Framework 3.5 ausgerichtet ist.

    Dim NativeSheet As Microsoft.Office.Interop.Excel.Worksheet = _
        TryCast(Globals.ThisAddIn.Application.ActiveSheet,  _
        Microsoft.Office.Interop.Excel.Worksheet)
    
    If NativeSheet IsNot Nothing Then
        Dim VstoSheet As Microsoft.Office.Tools.Excel.Worksheet = _
            NativeSheet.GetVstoObject()
    End If
    
    Microsoft.Office.Interop.Excel.Worksheet nativeSheet =
        Globals.ThisAddIn.Application.ActiveSheet as
        Microsoft.Office.Interop.Excel.Worksheet;
    
    if (nativeSheet != null)
    {
        Microsoft.Office.Tools.Excel.Worksheet vstoSheet =
            nativeSheet.GetVstoObject();
    }
    

Generieren von ListObject-Hoststeuerelementen

Wenn Sie die GetVstoObject-Methode verwenden, um Microsoft.Office.Interop.Excel.ListObject zu erweitern, gibt die Methode ein Microsoft.Office.Tools.Excel.ListObject zurück. Microsoft.Office.Tools.Excel.ListObject verfügt über sämtliche Funktionen des ursprünglichen Microsoft.Office.Interop.Excel.ListObject, besitzt jedoch zusätzliche Funktionen. Dazu gehört die Möglichkeit, das Objekt mithilfe des Datenbindungsmodells von Windows Forms an Daten zu binden. Weitere Informationen finden Sie unter ListObject-Steuerelement.

So erstellen Sie ein Hoststeuerelement für ein ListObject

  • Im folgenden Codebeispiel wird veranschaulicht, wie ein Microsoft.Office.Tools.Excel.ListObject für das erste Microsoft.Office.Interop.Excel.ListObject im aktiven Arbeitsblatt in einem Projekt generiert wird, das auf .NET Framework 4 ausgerichtet ist.

    Dim sheet As Microsoft.Office.Interop.Excel.Worksheet =
        Globals.ThisAddIn.Application.ActiveSheet
    If sheet.ListObjects.Count > 0 Then
        Dim listObject As Excel.ListObject = sheet.ListObjects(1)
        Dim vstoListObject As Microsoft.Office.Tools.Excel.ListObject =
            Globals.Factory.GetVstoObject(listObject)
    End If
    
    Microsoft.Office.Interop.Excel.Worksheet sheet =
        Globals.ThisAddIn.Application.ActiveSheet;
    if (sheet.ListObjects.Count > 0)
    {
        Excel.ListObject listObject = 
            sheet.ListObjects[1];
        Microsoft.Office.Tools.Excel.ListObject vstoListObject =
            Globals.Factory.GetVstoObject(listObject);
    }
    
  • Im folgenden Codebeispiel wird die gleiche Aufgabe in einem Projekt dargestellt, das auf .NET Framework 3.5 ausgerichtet ist.

    Dim sheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet
    
    If sheet.ListObjects.Count > 0 Then
        Dim listObject As Excel.ListObject = sheet.ListObjects(1)
        Dim vstoListObject As Microsoft.Office.Tools.Excel.ListObject = _
            listObject.GetVstoObject()
    End If
    
    Microsoft.Office.Interop.Excel.Worksheet sheet =
        Globals.ThisAddIn.Application.ActiveSheet as
        Microsoft.Office.Interop.Excel.Worksheet;
    
    if (sheet.ListObjects.Count > 0)
    {
        Excel.ListObject listObject = sheet.ListObjects[1];
        Microsoft.Office.Tools.Excel.ListObject vstoListObject =
            listObject.GetVstoObject();
    }
    

Hinzufügen von Smarttags zu Dokumenten und Arbeitsmappen

Nachdem Sie ein Microsoft.Office.Tools.Word.Document oder eine Microsoft.Office.Tools.Excel.Workbook generiert haben, können Sie ein Smarttag erstellen, das im Kontext des Dokuments oder der Arbeitsmappe erkannt wird, das bzw. die von diesen Objekten dargestellt wird. Verwenden Sie dafür die VstoSmartTags-Eigenschaft des Microsoft.Office.Tools.Word.Document oder der Microsoft.Office.Tools.Excel.Workbook. Weitere Informationen finden Sie unter den folgenden Themen:

Hinzufügen von verwalteten Steuerelementen zu Dokumenten und Arbeitsblättern

Nachdem Sie ein Microsoft.Office.Tools.Word.Document oder ein Microsoft.Office.Tools.Excel.Worksheet erstellt haben, können Sie dem Dokument oder Arbeitsblatt, das von diesen erweiterten Objekten dargestellt wird, Steuerelemente hinzufügen. Verwenden Sie dafür die Controls-Eigenschaft des Microsoft.Office.Tools.Word.Document oder des Microsoft.Office.Tools.Excel.Worksheet. Weitere Informationen finden Sie unter Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit.

Sie können Windows Forms-Steuerelemente oder Hoststeuerelemente hinzufügen. Ein Hoststeuerelement ist ein von der Visual Studio Tools for Office-Laufzeit bereitgestelltes Steuerelement, das ein entsprechendes Steuerelement in der primären Interopassembly von Word oder Excel umschließt. Ein Hoststeuerelement macht das Verhalten des zugrunde liegenden systemeigenen Office-Objekts verfügbar. Es löst jedoch auch Ereignisse aus und kann mithilfe des Datenbindungsmodells von Windows Forms an Daten gebunden werden. Weitere Informationen finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.

Tipp

Sie können mithilfe eines Add-Ins weder einem Arbeitsblatt ein XmlMappedRange-Steuerelement, noch einem Dokument ein XMLNode-Steuerelement oder ein XMLNodes-Steuerelement hinzufügen. Diese Hoststeuerelemente können nicht programmgesteuert hinzugefügt werden. Weitere Informationen finden Sie unter Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen.

Beibehalten und Entfernen von Steuerelementen

Wenn einem Dokument oder Arbeitsblatt verwaltete Steuerelemente hinzugefügt werden, werden die Steuerelemente beim Speichern und Schließen des Dokuments nicht beibehalten. Alle Hoststeuerelemente werden entfernt, sodass nur die zugrunde liegenden systemeigenen Office-Objekte zurückbleiben (zum Beispiel wird ein Microsoft.Office.Tools.Excel.ListObject zu einem Microsoft.Office.Interop.Excel.ListObject). Windows Forms-Steuerelemente werden ebenfalls entfernt, die ActiveX-Wrapper für die Steuerelemente verbleiben jedoch im Dokument. Sie müssen im Add-In Code zur Bereinigung der Steuerelemente sowie zur Neuerstellung der Steuerelemente beim nächsten Öffnen des Dokuments hinzufügen. Weitere Informationen finden Sie unter Beibehalten von dynamischen Steuerelementen in Office-Dokumenten.

Zugreifen auf Ereignisse auf Anwendungsebene bei Dokumenten und Arbeitsmappen

Manche Dokument-, Arbeitsmappen- und Arbeitsblattereignisse im systemeigenen Word- und Excel-Objektmodell werden nur auf Anwendungsebene ausgelöst. Zum Beispiel wird das DocumentBeforeSave-Ereignis ausgelöst, wenn ein Dokument in Word geöffnet wird. Dieses Ereignis wird jedoch in der Microsoft.Office.Interop.Word.Application-Klasse und nicht in der Microsoft.Office.Interop.Word.Document-Klasse definiert.

Wenn Sie in einem Add-In nur systemeigene Office-Objekte verwenden, müssen Sie diese Ereignisse auf Anwendungsebene behandeln und zusätzlichen Code schreiben, mit dem ermittelt wird, ob es sich bei dem Dokument, das das Ereignis ausgelöst hat, um das von Ihnen angepasste Dokument handelt. Hostelemente stellen diese Ereignisse auf der Dokumentebene bereit, sodass es einfacher ist, die Ereignisse für ein bestimmtes Dokument zu behandeln. Sie können ein Hostelement erstellen und dann das Ereignis für dieses Hostelement behandeln.

Beispiel zum Verwenden systemeigener Word-Objekte

Im folgenden Codebeispiel wird veranschaulicht, wie ein Ereignis auf Anwendungsebene für Word-Dokumente behandelt wird. Die CreateDocument-Methode erstellt ein neues Dokument und definiert dann einen DocumentBeforeSave-Ereignishandler, der das Speichern des Dokuments verhindert. Da es sich um ein Ereignis auf Anwendungsebene handelt, das für das Microsoft.Office.Interop.Word.Application-Objekt ausgelöst wird, muss der Ereignishandler den Doc-Parameter mit dem document1-Objekt vergleichen, um zu ermitteln, ob document1 das gespeicherte Dokument darstellt.

Private document1 As Word.Document = Nothing

Private Sub CreateDocument1()
    document1 = Me.Application.Documents.Add()
End Sub

Private Sub Application_DocumentBeforeSave(ByVal Doc As Word.Document, _
    ByRef SaveAsUI As Boolean, ByRef Cancel As Boolean) _
    Handles Application.DocumentBeforeSave
    If Type.ReferenceEquals(Doc, document1) Then
        Cancel = True
    End If
End Sub
private Word.Document document1 = null;

private void CreateDocument1()
{
    document1 = this.Application.Documents.Add(ref missing,
        ref missing, ref missing, ref missing);
    this.Application.DocumentBeforeSave += 
        new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(
        Application_DocumentBeforeSave);
}

private void Application_DocumentBeforeSave(Word.Document Doc, 
    ref bool SaveAsUI, ref bool Cancel)
{
    if (Type.ReferenceEquals(Doc, document1)) 
    {
        Cancel = true;
    }
}

Beispiele zum Verwenden eines Hostelements

In den folgenden Codebeispielen wird dieser Prozess vereinfacht, indem das BeforeSave-Ereignis eines Microsoft.Office.Tools.Word.Document-Hostelements behandelt wird. Die CreateDocument2-Methode in diesen Beispielen generiert ein Microsoft.Office.Tools.Word.Document, das das document2-Objekt erweitert. Daraufhin wird ein BeforeSave-Ereignishandler definiert, der das Speichern des Dokuments verhindert. Da dieser Ereignishandler nur aufgerufen wird, wenn document2 gespeichert wird, kann der Ereignishandler den Speichervorgang abbrechen, ohne zusätzlich überprüfen zu müssen, welches Dokument gespeichert wird.

Im folgenden Codebeispiel wird diese Aufgabe in einem Projekt dargestellt, das auf .NET Framework 4 ausgerichtet ist.

Private document2 As Word.Document = Nothing
Private WithEvents vstoDocument As Microsoft.Office.Tools.Word.Document = Nothing

Private Sub CreateDocument2()
    document2 = Me.Application.Documents.Add()
    vstoDocument = Globals.Factory.GetVstoObject(document2)
End Sub

Private Sub vstoDocument_BeforeSave(ByVal sender As Object, _
    ByVal e As SaveEventArgs) Handles vstoDocument.BeforeSave
    e.Cancel = True
End Sub
private Word.Document document2 = null;
private Microsoft.Office.Tools.Word.Document vstoDocument = null;

private void CreateDocument2()
{
    document2 = this.Application.Documents.Add(ref missing,
        ref missing, ref missing, ref missing);
    vstoDocument = Globals.Factory.GetVstoObject(document2);
    vstoDocument.BeforeSave += new SaveEventHandler(vstoDocument_BeforeSave);
}

private void vstoDocument_BeforeSave(object sender, SaveEventArgs e)
{
    e.Cancel = true;
}

Im folgenden Codebeispiel wird diese Aufgabe in einem Projekt dargestellt, das auf .NET Framework 3.5 ausgerichtet ist.

Private document2 As Microsoft.Office.Interop.Word.Document = Nothing
Private WithEvents vstoDocument As Microsoft.Office.Tools.Word.Document = Nothing

Private Sub CreateDocument2()
    document2 = Me.Application.Documents.Add()
    vstoDocument = document2.GetVstoObject()
End Sub

Private Sub vstoDocument_BeforeSave(ByVal sender As Object,
    ByVal e As SaveEventArgs) Handles vstoDocument.BeforeSave
    e.Cancel = True
End Sub
private Word.Document document2 = null;
private Microsoft.Office.Tools.Word.Document vstoDocument = null;

private void CreateDocument2()
{
    document2 = this.Application.Documents.Add(ref missing,
        ref missing, ref missing, ref missing);
    vstoDocument = document2.GetVstoObject();
    vstoDocument.BeforeSave += new SaveEventHandler(vstoDocument_BeforeSave);
}

private void vstoDocument_BeforeSave(object sender, SaveEventArgs e)
{
    e.Cancel = true;
}

Ermitteln, ob ein Office-Objekt erweitert wurde

Um zu ermitteln, ob für ein erweitertes Objekt bereits ein bestimmtes systemeigenes Office-Objekt generiert wurde, verwenden Sie die HasVstoObject-Methode. Diese Methode gibt true zurück, wenn bereits ein erweitertes Objekt generiert wurde. Andernfalls gibt sie false zurück.

In Projekten, die auf .NET Framework 3.5 ausgerichtet sind, ist die HasVstoObject-Methode in Instanzen der folgenden Typen in den primären Interopassemblys von Excel und Word verfügbar:

Verwenden Sie in Projekten, die auf .NET Framework 4 ausgerichtet sind, die Globals.Factory.HasVstoMethod-Methode. Übergeben Sie das systemeigene Word-Objekt oder Excel-Objekt (z. B. Microsoft.Office.Interop.Word.Document oder Microsoft.Office.Interop.Excel.Worksheet), das Sie für ein erweitertes Objekt testen möchten.

Die HasVstoObject-Methode ist sinnvoll, wenn Code nur dann ausgeführt werden soll, wenn ein bestimmtes Office-Objekt über ein erweitertes Objekt verfügt. Wenn Sie zum Beispiel ein Word-Add-In verwenden, das das DocumentBeforeSave-Ereignis behandelt, um vor dem Speichern verwaltete Steuerelemente aus einem Dokument zu entfernen, können Sie die HasVstoObject-Methode verwenden, um zu ermitteln, ob das Dokument erweitert wurde. Wenn das Dokument nicht erweitert wurde, kann es keine verwalteten Steuerelemente enthalten und die Ausführung des Ereignishandlers kann beendet werden, ohne Steuerelemente aus dem Dokument zu entfernen.

Konfigurieren von .NET Framework 3.5-Projekten zur Verwendung der GetVstoObject-Methode und der HasVstoObject-Methode

Wenn Sie ein Projekt auf Anwendungsebene erstellen, das auf .NET Framework 3.5 abzielt, ist das Projekt automatisch für die Verwendung der GetVstoObject-Methode und der HasVstoObject-Methode in der ThisAddIn.cs-Codedatei und der ThisAddIn.vb-Codedatei konfiguriert. Um diese Methoden in einer von ThisAddIn.cs und ThisAddIn.vb verschiedenen Codedatei verwenden zu können, müssen Sie die folgenden Änderungen in der Codedatei vornehmen.

So ändern Sie eine Codedatei in einem Excel-Projekt zur Erstellung erweiterter Objekte

  • Fügen Sie die folgenden using-Anweisungen (in C#) bzw. Imports-Anweisungen (in Visual Basic) am Anfang der Codedatei hinzu, in der Sie die GetVstoObject-Methode und die HasVstoObject-Methode verwenden möchten.

    Imports Microsoft.Office.Tools.Excel.Extensions
    
    using Microsoft.Office.Tools.Excel.Extensions;
    

So ändern Sie eine Codedatei in einem Word-Projekt zur Erstellung erweiterter Objekte

  • Fügen Sie die folgenden using-Anweisungen (in C#) bzw. Imports-Anweisungen (in Visual Basic) am Anfang der Codedatei hinzu, in der Sie die GetVstoObject-Methode und die HasVstoObject-Methode verwenden möchten.

    Imports Microsoft.Office.Tools.Word.Extensions
    
    using Microsoft.Office.Tools.Word.Extensions;
    

Diese Änderungen sind erforderlich, da die GetVstoObject-Methode und die HasVstoObject-Methode als Erweiterungsmethoden implementiert sind. Obwohl die GetVstoObject-Methode und die HasVstoObject-Methode so verwendet werden, als wären sie in Typen in den primären Interopassemblys von Excel oder Word definiert, sind sie tatsächlich in Typen im Microsoft.Office.Tools.Excel.Extensions-Namespace und dem Microsoft.Office.Tools.Word.Extensions-Namespace der Visual Studio Tools for Office-Laufzeit definiert. Weitere Informationen über Erweiterungsmethoden finden Sie unter Erweiterungsmethoden (C#-Programmierhandbuch) und Erweiterungsmethoden (Visual Basic).

Siehe auch

Konzepte

Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit

Übersicht über Hostelemente und Hoststeuerelemente

Abrufen von erweiterten Objekten aus systemeigenen Office-Objekten in Anpassungen auf Dokumentebene

Weitere Ressourcen

Programmieren von Add-Ins auf Anwendungsebene

Übersicht über Smarttags

Beispiele und exemplarische Vorgehensweisen für die Programmierung mit Office