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:

  • 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 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 Unterschiede haben mit der Art zu tun, wie die Office-Objektmodelle im verwalteten Code verfügbar gemacht werden. Weitere Informationen finden Sie unter Writing Code in Office Solutions.

    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 Office solutions development overview (VSTO).

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 Events 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 for 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.

  • Sheet n: abgeleitet von WorksheetBase.

    Diese Basisklassen leiten alle Aufrufe ihrer Member an interne Implementierungen der entsprechenden Hostelementschnittstellen in der Visual Studio Tools for Office-Laufzeit um. Wenn Sie beispielsweise die Methode Protect der klasse ThisDocument aufrufen, leitet die Klasse DocumentBase diesen Aufruf an die interne Implementierung der Schnittstelle Document in der Visual Studio Tools for Office-Laufzeitumgebung weiter.

Zugriff 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 über das Verwenden der Objektmodelle von Word und Excel finden Sie unter Word Object Model Overview und Excel Object Model Overview.

Weitere Informationen zum Globals Objekt finden Sie unter Global access to objects in Office projects.

Steuerelemente zu Dokumenten hinzufügen

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 Host Items and Host Controls Overview und Windows Forms Controls on Office Documents Overview.

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 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 Combining VBA and Document-Level Customizations.

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 Managing Documents on a Server by Using the ServerDocument Class.

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:

Abrufen von erweiterten Objekten 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 die Office-Laufzeit bereitgestellt werden und die Funktionalität zu Objekten hinzufügen, die nativ in den Word- oder Excel-Objektmodellen vorhanden sind (sogenannte native Office-Objekte). Hostelemente und Hoststeuerelemente werden zusammen auch als erweiterte Objektebezeichnet. Weitere Informationen zu Hostelementen und Hoststeuerelementen, finden Sie unter Host Items and Host Controls Overview.

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. Andernfalls GetVstoObject wird Null ausgegeben. 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 verwenden, um zur Laufzeit ein neues Workbook Worksheet Element oder Document ein Hostelement zu erstellen. Sie können diese Methode nur für den Zugriff auf vorhandene Hostelemente verwenden, die zur Entwurfszeit in Ihrem Projekt generiert werden. Wenn Sie neue Hostelemente zur Laufzeit erstellen möchten, müssen Sie ein VSTO-Add-In-Projekt entwickeln. Weitere Informationen finden Sie unter Programmatic Limitations of Host Items and Host Controls und Extending Word Documents and Excel Workbooks in VSTO Add-ins at Run Time.

Verwenden der Methoden GetVstoObject und HasVstoObject

Um die Methode HasVstoObject und GetVstoObject aufzurufen, verwenden Sie die Methode Globals.Factory.GetVstoObject oder Globals.Factory.HasVstoObject nd übergeben Sie das native Word- oder Excel-Objekt (z. B. Document oder Worksheet), das Sie testen möchten.