Freigeben über


Programmanpassungen auf Dokumentebene

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

  • Automatisieren Sie die Anwendung mithilfe des Objektmodells.

  • Fügen Sie der Oberfläche des Dokuments Steuerelemente hinzu.

  • Rufen Sie visual Basic for Applications (VBA)-Code im Dokument aus der Anpassungsassembly auf.

  • Aufrufen von Code in der Anpassungsbibliothek aus VBA.

  • Verwalten Sie bestimmte Aspekte des Dokuments, während es sich auf einem Server befindet, auf dem Microsoft Office nicht installiert ist.

  • Passen Sie die Benutzeroberfläche der Anwendung an.

    Gilt für: Die Informationen in diesem Thema gelten für Projekte auf Dokumentebene für Excel und Word. Weitere Informationen finden Sie unter Funktionen verfügbar nach Office-Anwendung und Projekttyp.

    Einige Aspekte des Schreibens von Code in Projekten auf Dokumentebene unterscheiden sich von anderen Projekttypen in Visual Studio. Durch die Art und Weise, wie die Office-Objektmodelle dem verwalteten Code verfügbar gemacht werden, werden viele dieser Unterschiede verursacht. 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, mit der Sie mit dem Schreiben des Codes beginnen können. Visual Studio generiert verschiedene Klassen für Word und Excel:

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

  • Projekte auf Dokumentebene für Excel verfügen über mehrere generierte Klassen: eine für die Arbeitsmappe selbst und eine für jedes Arbeitsblatt. Standardmäßig weisen diese Klassen die folgenden Namen auf:

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

    Die generierte Klasse enthält 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 direkt vor dem Schließen des Dokuments auszuführen, fügen Sie dem Shutdown Ereignishandler Code hinzu. Weitere Informationen finden Sie unter "Ereignisse in Office-Projekten".

Verstehen Sie das Design der generierten Klassen

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

  • ThisDocument: abgeleitet von DocumentBase.

  • ThisWorkbook: abgeleitet von WorkbookBase.

  • Sheet n: abgeleitet von WorksheetBase.

    Diese Basisklassen leiten alle Aufrufe an ihre Mitglieder an interne Implementierungen der entsprechenden Hostelement-Schnittstellen in der Visual Studio Tools for 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 den Visual Studio-Tools für Office-Laufzeit um.

Zugreifen auf das Objektmodell der Hostanwendung

Um auf das Objektmodell der Hostanwendung zuzugreifen, verwenden Sie Member der generierten Klasse in Ihrem Projekt. Jede dieser Klassen entspricht einem Objekt im Objektmodell von Excel oder Word und enthält die meisten der gleichen Eigenschaften, Methoden und Ereignisse. Beispielsweise stellt die ThisDocument Klasse in einem Projekt auf Dokumentebene für Word die meisten der gleichen Elemente wie das Document Objekt im Word-Objektmodell bereit.

Das folgende Codebeispiel zeigt, wie Sie das Word-Objektmodell verwenden, um das Dokument zu speichern, das Teil einer Anpassung auf Dokumentebene für Word ist. Dieses Beispiel soll aus der ThisDocument Klasse ausgeführt werden.

this.Save();

Um das Gleiche von außerhalb der ThisDocument Klasse zu tun, verwenden Sie das Globals Objekt, um auf die ThisDocument Klasse zuzugreifen. Sie können diesen Code beispielsweise einer Codedatei für den Aktionsbereich hinzufügen, wenn Sie eine Schaltfläche " Speichern " in die Ui des Aktionsbereichs einfügen möchten.

Globals.ThisDocument.Save();

Da die ThisDocument Klasse den größten Teil seiner Member aus dem Document Hostelement abruft, ist die Save Methode, die in diesem Code aufgerufen wird, wirklich 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

Um die Benutzeroberfläche des Dokuments anzupassen, können Sie der Dokumentoberfläche Windows Forms-Steuerelemente oder Hoststeuerelemente hinzufügen. Durch die Kombination verschiedener Steuerelemente und schreiben von Code können Sie die Steuerelemente an Daten binden, Informationen vom Benutzer sammeln und auf Benutzeraktionen reagieren.

Hoststeuerelemente sind Klassen, die einige der Objekte im Word- und Excel-Objektmodell erweitern. Beispielsweise stellt das ListObject Hoststeuerelement alle Funktionen der ListObject In Excel bereit. Das ListObject Hoststeuerelement verfügt jedoch auch über zusätzliche Ereignisse und Datenbindungsfunktionen.

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

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 Ihr Projekt auch so konfigurieren, dass der VBA-Code im Dokument Code in der Anpassungsassembly aufrufen kann.

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 sind. Sie können beispielsweise auf Daten im Datencache des Dokuments zugreifen und diese ä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 programmgesteuert eine Assembly 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-Anwendungen

Sie können die Benutzeroberfläche von Word und Excel auf folgende Weise anpassen, indem Sie eine Anpassung auf Dokumentebene verwenden:

Abrufen erweiterter Objekte aus eingebauten Office-Objekten in Dokumentanpassungen

Viele Ereignishandler für Office-Ereignisse erhalten ein systemeigenes Office-Objekt, das die Arbeitsmappe, das Arbeitsblatt oder das Dokument darstellt, das das Ereignis ausgelöst hat. In einigen Fällen sollten Sie Code nur ausführen, wenn die Arbeitsmappe oder das Dokument in Der Anpassung auf Dokumentebene das Ereignis ausgelöst hat. 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, aber nicht, wenn der Benutzer ein Arbeitsblatt in einer anderen Arbeitsmappe aktiviert, die gleichzeitig geöffnet ist.

Wenn Sie über ein systemeigenes Office-Objekt verfügen, können Sie testen, ob dieses Objekt in ein Hostelement oder Hoststeuerelement in einer Anpassung auf Dokumentebene erweitert wurde. Hostelemente und Hoststeuerelemente sind Typen, die von den 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. Zusammen werden Hostelemente und Hoststeuerelemente auch als erweiterte Objekte bezeichnet. Weitere Informationen zu Hostelementen und Hoststeuerelementen finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.

Grundlegendes zu den Methoden GetVstoObject und HasVstoObject

Verwenden Sie zum Testen eines systemeigenen Office-Objekts die HasVstoObject Methoden und GetVstoObject Methoden in Ihrem Projekt:

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

  • Verwenden Sie die GetVstoObject Methode, wenn Sie das erweiterte Objekt für ein systemeigenes Office-Objekt abrufen möchten. Diese Methode gibt ein ListObject, Workbook, , Worksheetoder Document Objekt zurück, wenn das angegebene systemeigene Office -Objekt eins hat. GetVstoObject Andernfalls wird NULL zurückgegeben. Die Methode gibt zum Beispiel GetVstoObject einen Document zurück, wenn das angegebene Document das zugrunde liegende Objekt für das Dokument in Ihrem Word-Dokumentenprojekt 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 verwenden, um auf vorhandene Hostelemente zuzugreifen, 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 Methoden HasVstoObject und GetVstoObject aufzurufen, verwenden Sie die Methode Globals.Factory.GetVstoObject oder Globals.Factory.HasVstoObject und übergeben Sie das native Word- oder Excel-Objekt (z. B. ein Document oder Worksheet), das Sie testen möchten.