Programmanpassungen 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:

  • Automatisieren der Anwendung über deren Objektmodell

  • Hinzufügen von Steuerelementen zur Oberfläche eines Dokuments

  • Aufrufen von VBA-Code (Visual Basic for Applications) im Dokument aus der Anpassungsassembly

  • Aufrufen von Code in der Anpassungsassembly aus VBA

  • Verwalten bestimmter Aspekte des Dokuments, obwohl es sich auf einem Server befindet, auf dem Microsoft Office nicht installiert ist

  • Anpassen der Benutzeroberfläche der Anwendung

    Gilt für: Die Informationen in diesem Thema gelten für Projekte auf Dokumentebene für Excel und Word. Weitere Informationen finden Sie unter features available by Office-App lication and project type.

    Einige Aspekte beim Schreiben von Code in Projekten auf Dokumentebene unterscheiden sich von anderen Projekttypen in Visual Studio. Viele dieser Unterschiede haben mit der Art zu tun, wie die Office-Objektmodelle im verwalteten Code verfügbar gemacht werden. Weitere Informationen finden Sie unter Schreiben von Code in Office-Lösungen.

    Allgemeine Informationen zu Anpassungen auf Dokumentebene und anderen Arten von Lösungen, die Sie mithilfe der Office-Entwicklungstools in Visual Studio erstellen können, finden Sie unter VSTO (Übersicht über die Entwicklung von Office-Lösungen).

Verwenden der generierten Klassen in Projekten auf Dokumentebene

Wenn Sie ein Projekt auf Dokumentebene erstellen, 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 erhält die Klasse standardmäßig den Namen ThisDocument .

  • Projekte auf Dokumentebene für Excel haben 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 beinhaltet Ereignishandler, die aufgerufen werden, wenn das Dokument geöffnet oder geschlossen wird. Um Code auszuführen, wenn das Dokument geöffnet wird, fügen Sie dem Startup -Ereignishandler Code hinzu. Um Code auszuführen, unmittelbar bevor das Dokument geschlossen wird, fügen Sie dem Shutdown -Ereignishandler Code hinzu. Weitere Informationen finden Sie unter "Ereignisse in Office-Projekten".

Grundlegendes zum Entwurf der generierten Klassen

In Projekten, die auf .NET Framework 4 oder .NET Framework 4.5 abzielen, sind die Hostelementtypen in der Visual Studio-Tools für Office-Laufzeit Schnittstellen, sodass die generierten Klassen ihre Implementierung nicht von ihnen ableiten können. Stattdessen werden für die generierten Klassen die meisten ihrer Member aus den folgenden Basisklassen abgeleitet:

  • ThisDocumentwird aus DocumentBaseabgeleitet.

  • ThisWorkbookwird aus WorkbookBaseabgeleitet.

  • Sheetn: abgeleitet von WorksheetBase.

    Diese Basisklassen leiten alle Aufrufe an ihre Member an interne Implementierungen der entsprechenden Hostelementschnittstellen in der Visual Studio-Tools für Office-Laufzeit um. Wenn Sie beispielsweise die Protect Methode der ThisDocument Klasse aufrufen, leitet die DocumentBase Klasse diesen Aufruf an die interne Implementierung der Document Schnittstelle in der 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 in Ihrem Projekt. Jede dieser Klassen entspricht einem Objekt im Objektmodell von Excel oder Word, und sie enthalten einen Großteil derselben Eigenschaften, Methoden und Ereignisse. Beispielsweise stellt die ThisDocument -Klasse in einem Projekt auf Dokumentebene für Word stellt einen Großteil derselben Member wie das 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 für Word ist. Dieses Beispiel ist für die Ausführung über die ThisDocument -Klasse bestimmt.

this.Save();

Verwenden Sie für die Ausführung außerhalb der ThisDocument -Klasse das Globals -Objekt, um auf die ThisDocument -Klasse zuzugreifen. Beispielsweise können Sie diesen Code zu einer Codedatei eines Aktionsbereichs hinzufügen, wenn Sie eine Speichern -Schaltfläche in die Benutzeroberfläche des Aktionsbereichs einschließen möchten.

Globals.ThisDocument.Save();

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

Weitere Informationen zur Verwendung der Objektmodelle von Word und Excel finden Sie in der Übersicht über das Word-Objektmodell und die Excel-Objektmodellübersicht.

Weitere Informationen zum Globals Objekt finden Sie unter globalen Zugriff auf Objekte in Office-Projekten.

Hinzufügen von Steuerelementen zu Dokumenten

Wenn Sie die Benutzeroberfläche des Dokuments anpassen möchten, können Sie der Dokumentoberfläche Windows Forms-Steuerelemente oder Hoststeuerelemente hinzufügen. Sie können Steuerelemente an Daten binden, Benutzerinformationen abfragen und auf Benutzeraktionen reagieren, indem Sie verschiedene Gruppen von Steuerelementen kombinieren und Code schreiben.

Hoststeuerelemente sind Klassen, die einige der Objekte im Word-Objektmodell und im Excel-Objektmodell erweitern. Zum Beispiel stellt das ListObject -Hoststeuerelement alle Funktionen des ListObject -Elements in Excel zur Verfügung. Allerdings hat das ListObject -Hoststeuerelement weitere Ereignisse und Datenbindungsfunktionen.

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

Kombinieren von VBA- und Dokumentebenenanpassungen

Sie können VBA-Code in einem Dokument verwenden, das Teil einer Anpassung auf Dokumentebene ist. Sie können VBA-Code im Dokument aus der Anpassungsassembly aufrufen, und Sie können für Ihr Projekt die Aktivierung des VBA-Codes im Dokument konfigurieren, um Code in der Anpassungsassembly aufzurufen.

Weitere Informationen finden Sie unter Kombinieren von VBA- und Dokumentebenenanpassungen.

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. Beispielsweise können Sie auf Daten im Datencache des Dokuments zugreifen und diese Daten ändern. Sie können auch die Anpassungsassembly verwalten, die dem Dokument zugeordnet ist. Sie können 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 mithilfe der ServerDocument-Klasse.

Anpassen der Benutzeroberfläche von Microsoft Office-App lizenzen

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

Abrufen erweiterter Objekte aus 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 das das Ereignis ausgelöst wurde. In einigen Fällen möchten Sie eventuell Code nur dann ausführen, wenn das Ereignis durch die Arbeitsmappe oder das Dokument in Ihrer Anpassung auf Dokumentebene ausgelöst wurde. So könnte es sein, dass Sie in einer Anpassung auf Dokumentebene für Excel bestimmten Code nur ausführen möchten, wenn der Benutzer eines der Arbeitsblätter in der angepassten Arbeitsmappe aktiviert, diesen Code aber nicht ausführen möchten, wenn der Benutzer ein Arbeitsblatt in einer anderen Arbeitsmappe aktiviert, die zufällig zur gleichen Zeit geöffnet ist.

Wenn Sie ein systemeigenes Office-Objekt haben, 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 Funktionen zu Objekten hinzufügen, die nativ in den Word- oder Excel-Objektmodellen (als systemeigene Office-Objekte bezeichnet) vorhanden sind. Hostelemente und Hoststeuerelemente werden zusammen auch als erweiterte Objektebezeichnet. Weitere Informationen zu Hostelementen und Hoststeuerelementen finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.

Grundlegendes zu den Methoden GetVstoObject und HasVstoObject

Um ein systemeigenes Office-Objekt zu testen, verwenden Sie in Ihrem Projekt die HasVstoObject- und die GetVstoObject-Methode:

  • Wenn Sie ermitteln möchten, ob das systemeigene Office-Objekt in Ihrer Anpassung ein erweitertes Objekt hat, verwenden Sie die HasVstoObject-Methode. Diese Methode gibt true zurück, wenn das systemeigene Office-Objekt ein erweitertes Objekt hat, andernfalls gibt sie false zurück.

  • Wenn Sie das erweiterte Objekt für ein systemeigenes Office-Objekt abrufen möchten, verwenden Sie die GetVstoObject-Methode. Diese Methode gibt ein ListObject-, Workbook-, Worksheet- oder Document -Objekt zurück, wenn das angegebene systemeigene Office-Objekt ein solches Objekt hat. GetVstoObject Andernfalls wird NULL zurückgegeben. Die GetVstoObject-Methode gibt z. B. ein Document zurück, wenn das angegebene Document-Objekt das zugrunde liegende Objekt für das Dokument in Ihrem Word-Dokumentprojekt ist.

    In Projekten auf Dokumentebene können Sie die GetVstoObject Methode nicht zum Erstellen eines neuen Workbook, Worksheetoder Document Hostelements zur Laufzeit verwenden. Sie können diese Methode nur für den Zugriff auf vorhandene Hostelemente verwenden, die zur Entwurfszeit in Ihrem Projekt generiert werden. Wenn Sie zur Laufzeit neue Hostelemente erstellen möchten, müssen Sie ein VSTO-Add-In-Projekt entwickeln. Weitere Informationen finden Sie unter "Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen " und "Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in VSTO-Add-Ins zur Laufzeit".

Verwenden der Methoden GetVstoObject und HasVstoObject

Um die Methode aufzurufenGetVstoObject, verwenden Sie die Globals.Factory.GetVstoObjectHasVstoObject oder Globals.Factory.HasVstoObject die Methode, und übergeben Sie das systemeigene Word- oder Excel-Objekt (z. B. ein Document oderWorksheet) das Sie testen möchten.