Freigeben über


Programmieren von Anpassungen auf Dokumentebene

Wenn Sie Microsoft Office Word oder Microsoft Office Excel mit einer Anpassung auf Dokumentebene erweitern, können Sie die folgenden Aufgaben ausführen:

  • Sie können die Anwendung mithilfe des Objektmodells automatisieren.

  • Sie können der Oberfläche des Dokuments Steuerelemente hinzufügen.

  • Sie können VBA (Visual Basic for Applications)-Code im Dokument von der Anpassungsassembly aufrufen.

  • Sie können Code in der Anpassungsassembly von VBA aufrufen.

  • Sie können bestimmte Aspekte des Dokuments verwalten, während es sich auf einem Server ohne Microsoft Office befindet.

  • Sie können die Benutzeroberfläche der Anwendung anpassen.

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

Einige Aspekte beim Schreiben von Code in Projekten auf Dokumentebene unterscheiden sich von anderen Projekttypen in Visual Studio.Viele dieser Unterscheide werden durch die Art und Weise verursacht, wie die Office-Objektmodelle im verwalteten Code verfügbar gemacht werden.Weitere Informationen finden Sie unter Schreiben von Code in Office-Projektmappen.

Allgemeine Informationen zu Anpassungen auf Dokumentebene und anderen Typen von Lösungen, die mit den Office-Entwicklungstools in Visual Studio erstellt werden können, finden Sie unter Übersicht über die Entwicklung von Office-Projektmappen.

Verwenden der generierten Klassen in Projekten auf Dokumentebene

Beim Erstellen eines Projekts auf Dokumentebene generiert Visual Studio automatisch eine Klasse im Projekt, die Sie zum Schreiben von Code verwenden können.Visual Studio generiert unterschiedliche Klassen für Word und Excel:

  • In Projekten auf Dokumentebene für Word wird die Klasse standardmäßig als ThisDocument bezeichnet.

  • Projekte auf Dokumentebene für Excel verfügen über mehrere generierte Klassen: eine für die Arbeitsmappe und eine für jedes Arbeitsblatt.Standardmäßig lauten die Namen dieser Klassen folgendermaßen:

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

Die generierte Klasse umfasst Ereignishandler, die aufgerufen werden, wenn das Dokument geöffnet oder geschlossen wird.Wenn Code beim Öffnen des Dokuments ausgeführt werden soll, fügen Sie dem Startup-Ereignishandler Code hinzu.Wenn Code direkt vor dem Schließen des Dokuments ausgeführt werden soll, fügen Sie dem Shutdown-Ereignishandler Code hinzu.Weitere Informationen finden Sie unter Ereignisse in Office-Projekten.

Bb386206.collapse_all(de-de,VS.110).gifGrundlegendes zum Entwurf der generierten Klassen

In Projekten, die .NET Framework 4 oder .NET Framework 4.5 abzielen, gibt das Hostelement in Visual Studio-Tools für Office-Laufzeit sind Schnittstellen, daher können die generierten Klassen ihre Implementierung nicht von ihnen ableiten.Stattdessen leiten die generierten Klassen die meisten ihrer Member von den folgenden Basisklassen ab:

Diese Basisklassen leiten alle Aufrufe an ihre Member zu internen Implementierungen der entsprechenden Hostelementschnittstellen in der Visual Studio-Tools für Office-Laufzeit um.Wenn Sie die Protect-Methode der ThisDocument-Klasse aufrufen, leitet die Microsoft.Office.Tools.Word.DocumentBase-Klasse diesen Aufruf an die interne Implementierung der Microsoft.Office.Tools.Word.Document-Schnittstelle in Visual Studio-Tools für Office-Laufzeit um.

Zugreifen auf das Objektmodell der Hostanwendung

Wenn Sie auf das Objektmodell der Hostanwendung zugreifen möchten, verwenden Sie Member der generierten Klasse im Projekt.Jede dieser Klassen entspricht einem Objekt im Objektmodell von Excel oder Word, und sie enthalten einen Großteil derselben Eigenschaften, Methoden und Ereignisse.Die ThisDocument-Klasse in einem Projekt auf Dokumentebene für Word stellt beispielsweise einen Großteil derselben Member wie das Microsoft.Office.Interop.Word.Document-Objekt im Word-Objektmodell bereit.

Im folgenden Codebeispiel wird gezeigt, wie Sie mithilfe des Word-Objektmodells das Dokument speichern, das Teil der Anpassung auf Dokumentebene ist.Dieses Beispiel soll in der ThisDocument-Klasse ausgeführt werden.

Me.Save()
this.Save();

Sie können dieselbe Aufgabe auch außerhalb der ThisDocument-Klasse ausführen, indem Sie mithilfe des Globals-Objekts auf die ThisDocument-Klasse zugreifen.Diesen Code können Sie beispielsweise einer Codedatei eines Aktionsbereichs hinzufügen, wenn Sie eine Schaltfläche Speichern in die Benutzeroberfläche des Aktionsbereichs einschließen möchten.

Globals.ThisDocument.Save()
Globals.ThisDocument.Save();

Da die ThisDocument-Klasse die meisten Member aus dem Microsoft.Office.Tools.Word.Document-Hostelement abruft, handelt es sich bei der in diesem Code aufgerufenen Save-Methode tatsächlich um die Save-Methode des Microsoft.Office.Tools.Word.Document-Hostelements.Diese Methode entspricht der Save-Methode des Microsoft.Office.Interop.Word.Document-Objekts im Word-Objektmodell.

Weitere Informationen über das Verwenden der Objektmodelle von Word und Excel finden Sie unter Übersicht über das Word-Objektmodell und unter Übersicht über das Excel-Objektmodell

Weitere Informationen über das Globals-Objekt finden Sie unter Globaler Zugriff auf Objekte in Office-Projekten.

Hinzufügen von Steuerelementen zu Dokumenten

Zum Anpassen der Benutzeroberfläche des Dokuments können Sie Windows Forms-Steuerelemente oder Hoststeuerelemente zur Dokumentoberfläche hinzufügen.Sie können Steuerelemente an Daten binden, Informationen vom Benutzer sammeln und auf Benutzeraktionen reagieren, indem Sie verschiedene Gruppen von Steuerelementen kombinieren und Code schreiben.

Hoststeuerelemente sind Klassen, die im Word-Objektmodell und im Excel-Objektmodell einige der Objekte erweitern.Zum Beispiel stellt das Microsoft.Office.Tools.Excel.ListObject-Hoststeuerelement alle Funktionen des Microsoft.Office.Interop.Excel.ListObject-Elements in Excel zur Verfügung.Das Microsoft.Office.Tools.Excel.ListObject-Hoststeuerelement verfügt jedoch auch über zusätzliche Ereignisse und Datenbindungsfähigkeiten.

Weitere Informationen finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente und unter Übersicht über Windows Forms-Steuerelemente in Office-Dokumenten.

Kombinieren von VBA und Anpassungen auf Dokumentebene

Sie können VBA-Code in einem Dokument verwenden, das Teil einer Anpassung auf Dokumentebene ist.Sie können VBA-Code im Dokument von der Anpassungsassembly aus aufrufen, und Sie können außerdem das Projekt so konfigurieren, dass VBA-Code in dem Dokument Code in der Anpassungsassembly aufrufen kann.

Weitere Informationen finden Sie unter Kombinieren von VBA und Anpassungen auf Dokumentebene.

Verwalten von Dokumenten auf einem Server

Sie können verschiedene Aspekte von Anpassungen auf Dokumentebene auf einem Server verwalten, auf dem Microsoft Office Word oder Microsoft Office Excel nicht installiert ist.Zum Beispiel können Sie auf Daten im Datencache des Dokuments zugreifen und diese ändern.Sie können auch die Anpassungsassembly verwalten, die dem Dokument zugeordnet ist.So können Sie beispielsweise die Assembly programmgesteuert aus dem Dokument entfernen, sodass das Dokument den Code nicht mehr ausführt, oder Sie können eine Assembly programmgesteuert an ein Dokument anfügen.

Weitere Informationen finden Sie unter Verwalten von Dokumenten auf einem Server mit der ServerDocument-Klasse.

Anpassen der Benutzeroberfläche von Microsoft Office-Anwendungen

Sie können die Benutzeroberfläche von Word und Excel mithilfe einer Anpassung auf Dokumentebene folgendermaßen anpassen:

Weitere Informationen über das Anpassen der Benutzeroberfläche von Microsoft Office-Anwendungen finden Sie unter Anpassung der Office-Benutzeroberfläche.

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

Viele Ereignishandler für Office-Ereignisse empfangen ein systemeigenes Office-Objekt, das die Arbeitsmappe, das Arbeitsblatt oder das Dokument darstellt, durch die/das das Ereignis ausgelöst wurde.In bestimmten Fällen möchten Sie eventuell Code nur dann ausführen, wenn das Ereignis durch die Arbeitsmappe oder das Dokument in der Anpassung auf Dokumentebene ausgelöst wurde.In einer Anpassung auf Dokumentebene für Excel können Sie z. B. Code ausführen, wenn der Benutzer eines der Arbeitsblätter in der angepassten Arbeitsmappe aktiviert, jedoch nicht, wenn er ein Arbeitsblatt in einer anderen Arbeitsmappe aktiviert, die zufällig zur gleichen Zeit geöffnet ist.

Wenn Sie über ein systemeigenes Office-Objekt verfügen, können Sie testen, ob das betreffende Objekt in einer Anpassung auf Dokumentebene zu einem Hostelement oder Hoststeuerelement erweitert wurde.Hostelemente und Hoststeuerelemente sind Typen, die von der Visual Studio-Tools für 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).Hostelemente und Hoststeuerelemente werden zusammen auch erweiterte Objekte aufgerufen. Weitere Informationen zu Hostelementen und Hoststeuerelementen, finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.

Grundlegendes zu GetVstoObject- und HasVstoObject-Methoden

Um ein systemeigenes Office-Objekt zu testen, verwenden Sie die HasVstoObject- und die GetVstoObject-Methoden im Projekt.

In Projekten auf Dokumentebene kann die GetVstoObject-Methode nicht verwendet werden, um zur Laufzeit ein neues Microsoft.Office.Tools.Excel.Workbook-, Microsoft.Office.Tools.Excel.Worksheet- oder Microsoft.Office.Tools.Word.Document-Hostelement zu erstellen.Sie können diese Methode nur für den Zugriff auf vorhandene Hostelemente verwenden, die zur Entwurfszeit im Projekt generiert werden.Wenn Sie neue Hostelemente zur Laufzeit erstellen möchten, müssen Sie ein Projekt auf Anwendungsebene entwickeln.Weitere Informationen finden Sie unter Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen und Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit.

Verwenden der GetVstoObject-Methode und der HasVstoObject-Methode

Um die HasVstoObject und GetVstoObject-Methode aufzurufen, die Globals.Factory.GetVstoObject oder Globals.Factory.HasVstoObject-Methode und in systemeigene Word-Objekt oder Excel-Objekt zu verwenden (z Microsoft.Office.Interop.Word.Document oder Microsoft.Office.Interop.Excel.Worksheet) diesem möchten Sie testen.

Siehe auch

Konzepte

Verwalten von Dokumenten auf einem Server mit der ServerDocument-Klasse

Schreiben von Code in Office-Projektmappen

Weitere Ressourcen

Steuerelemente für Office-Dokumente

Kombinieren von VBA und Anpassungen auf Dokumentebene