Erstellen von benutzerdefinierten Aufgabenbereichen in Office (2007)

Veröffentlicht: 30. Okt 2006

Von Mark O'Hara und Frank Rice

In der Version 2007 von Microsoft Office werden benutzerdefinierte Aufgabenbereiche vorgestellt. Damit werden Ihnen die Tools an die Hand gegeben, mit denen Sie Ihren Kunden die Funktionen und Informationen zeitgerecht bereitstellen können, die sie benötigen. Hier erfahren Sie, wie Sie benutzerdefinierte Aufgabenbereiche in Ihren Anwendungen verwenden können. (14 gedruckte Seiten)

Auf dieser Seite

Einführung in benutzerdefinierte Aufgabenbereiche Einführung in benutzerdefinierte Aufgabenbereiche
Erstellen flexibler Installationsoptionen Erstellen flexibler Installationsoptionen
Benutzerdefinierte Szenarios für Aufgabenbereiche Benutzerdefinierte Szenarios für Aufgabenbereiche
Funktionsweise benutzerdefinierter Aufgabenbereiche Funktionsweise benutzerdefinierter Aufgabenbereiche
Erstellen benutzerdefinierter Aufgabenbereiche als COM-Add-Ins Erstellen benutzerdefinierter Aufgabenbereiche als COM-Add-Ins
Schlussbemerkung Schlussbemerkung
Weitere Ressourcen Weitere Ressourcen

Einführung in benutzerdefinierte Aufgabenbereiche

Mit der Version 2007 von Microsoft Office wird ein programmierbarer, benutzerdefinierter Aufgabenbereich eingeführt. Dadurch ändert sich die Art und Weise, wie Sie in Version 2007 von Microsoft Office Lösungen für Dokumente entwickeln. In diesem Artikel wird der Aufgabenbereich erklärt, und es werden Lösungen und Szenarios bei der Verwendung des Aufgabenbereichs erörtert.

Die folgenden Anwendungen können benutzerdefinierte Aufgabenbereiche implementieren:

  • Microsoft Office Access 2007

  • Microsoft Office Excel 2007

  • Microsoft Office InfoPath 2007

  • Microsoft Office Outlook 2007

  • Microsoft Office PowerPoint 2007

  • Microsoft Office Word 2007

Sie können benutzerdefinierte Aufgabenbereiche in jeder Sprache erstellen, die COM unterstützt und die es Ihnen ermöglicht, DLL-Dateien (Dynamic-Link Library) zu erstellen. Dazu gehören z. B. Microsoft Visual Basic 6.0, Microsoft Visual Basic .NET, Microsoft Visual C++, Microsoft Visual C++ .NET und Microsoft Visual C. Microsoft Visual Basic für Applikationen (VBA) jedoch unterstützt das Erstellen benutzerdefinierter Aufgabenbereiche nicht. Benutzerdefinierte Aufgabenbereiche verwenden auch noch andere Technologien, mit denen Sie bereits vertraut sind, beispielsweise Microsoft ActiveX-Steuerelemente.

 

Erstellen flexibler Installationsoptionen

Mit Aufgabenbereichen, die in Microsoft Office XP eingeführt wurden, können Benutzer Inhalte zu ihren Dokumenten hinzufügen und manipulieren. Benutzer können z. B. Informationen aus externen Quellen abfragen und in ihre Dokumente einfügen, reichhaltige Grafiken hinzufügen, ein Dokument formatieren, mithilfe von XSD-Dateien (Extensible Schema Definition) strukturierte XML-Daten einfügen und viele andere Aufgaben in Aufgabenbereichen erledigen.

In der Version 2007 von Office bieten Ihnen die verbesserten Aufgabenbereiche eine einfache, flexible Möglichkeit, programmspezifische Funktionen in vollständig anpassbaren Aufgabenbereichen zu erstellen und bereitzustellen. Die Aufgabenbereiche können von den Benutzern in verschiedenen Bildschirmbereichen angedockt werden. Benutzer können mehrere benutzerdefinierte Aufgabenbereiche anzeigen, wenn sie sie benötigen, und jeden einzelnen getrennt steuern. Da benutzerdefinierte Aufgabenbereiche als COM-Add-Ins (Component Object Model) bereitgestellt werden, können Sie der neuen von Office 2007 Ribbon-Benutzeroberfläche Steuerelemente wie standardmäßige Schaltflächen hinzufügen, mit denen Benutzer die Aufgabenbereiche anzeigen können.

 

Benutzerdefinierte Szenarios für Aufgabenbereiche

Im Folgenden sind einige Beispielszenarios genannt, bei denen benutzerdefinierte Aufgabenbereiche verwendet werden:

  • In dem fiktiven Unternehmen Fabrikam Corporation speichern die Mitarbeiter Dokumente gemäß dem Gegenstand des Dokuments. Wenn ein Mitarbeiter beispielsweise einen Verkaufsbericht in Office Excel 2007 erstellt, speichert er die Datei auf einem Netzwerkserver, auf dem Informationen zu Verkaufsberichten gespeichert werden. Obwohl Manager die Informationen dadurch einfach auffinden können, müssen Mitarbeiter die Serverinformationen manuell heraussuchen.

    Nicole, eine Analytikerin und Light-Tool-Entwicklerin bei Fabrikam, ist der Meinung, dass den Mitarbeitern das Auffinden dieser Informationen erleichtert werden kann. Sie entscheidet sich für die Verwendung eines benutzerdefinierten Aufgabenbereichs. Da Nicole bereits COM-Add-Ins erstellt und bereitgestellt hat, ist sie mit dem Prozess vertraut. Sie erstellt ein benutzerdefiniertes, in ein Microsoft Windows Form eingefügtes ActiveX-Steuerelement, das ein Dropdownfeld und eine Schaltfläche enthält. Mithilfe des Dropdownfelds kann der Benutzer schnell den richtigen Server finden.

    Hinweise:   Windows Forms ist die Entwicklungsbibliothek innerhalb des Microsoft .NET Framework zum Erstellen reichhaltiger, auf Microsoft Windows basierender Anwendungen.

    Sobald der Benutzer das Dokument fertig gestellt hat, ruft er Nicoles Aufgabenbereich auf, wählt den entsprechenden Server aus, und klickt auf Speichern. Da die Benutzer die Serverinformationen nicht mehr manuell heraussuchen müssen, sind sie produktiver, und ihnen wurde eine mühsame Aufgabe abgenommen.

  • Chris, Fremdentwickler bei dem fiktiven Unternehmen Contoso Incorporated, möchte Inhalte integrieren und verfügbar machen, die aktuell auf einem Content Management Server gespeichert sind. Er möchte diese Inhalte in einer Art und Weise zur Verfügung stellen, dass seine Kunden nicht bei ihrer Arbeit gestört werden. Nach einigen Untersuchungen entschließt er sich dazu, mithilfe der Visual Studio-Tools für Microsoft Office System (Visual Studio-Tools für Office) einen benutzerdefinierten Aufgabenbereich mit verwaltetem Code zu entwickeln. Er fügt mit den Visual Studio-Tools für Office Version 3.0 das ActiveX-Steuerelement hinzu, da er sich mit dessen Tools auskennt. Er stellt auch einfachen Zugriff zu seinem benutzerdefinierten Aufgabenbereich bereit, indem er der Office 2007 Ribbon-Benutzeroberfläche Schaltflächen hinzufügt. Mit der Multifunktionsleiste (auf Englisch: Ribbon) kann der Benutzer steuern, wann der Aufgabenbereich angezeigt wird. Er versieht das Add-In und die ActiveX-Steuerelemente mit einer digitalen Signatur. Anschließend verpackt er den benutzerdefinierten Aufgabenbereich und stellt ihn für jede Abteilung bereit.

    Hinweis:   Visual Studio-Tools für Office Version 3.0 steht für Beta 2 nicht zur Verfügung.

  • Janine möchte eine Lösung mit benutzerdefinierten Aufgabenbereichen entwickeln, die sie verkaufen und Kunden als aus dem Internet herunterladbare Beispielversion zur Verfügung stellen kann. Mithilfe der vorhandenen Infrastruktur für benutzerdefinierte Aufgabenbereiche kann Janine mit Leichtigkeit ein COM-Add-In und ein ActiveX-Steuerelement erstellen, die sie in eine aus dem Internet herunterladbare Beispielversion verpackt. Zur Erhöhung der Sicherheit versieht sie das Add-In und das Steuerelement mit einer digitalen Signatur. Anschließend stellt sie das Paket auf einem Webserver bereit.

 

Funktionsweise benutzerdefinierter Aufgabenbereiche

Bei der Erstellung benutzerdefinierter Aufgabenbereiche mithilfe von COM-Add-Ins wird entweder verwalteter oder nicht verwalteter Code erstellt. Zusätzlich zu der Schnittstelle IDTExtensibility2, die von allen COM-Add-Ins gefordert wird, muss das COM-Add-In für den benutzerdefinierten Aufgabenbereich die Schnittstelle ICustomTaskPaneConsumer implementieren, die die Methode CTPFactoryAvailable verfügbar macht. Die Syntax für diese Methode lautet:

Microsoft.Office.Core.ICustomTaskPaneConsumer.CTPFactoryAvailable (Microsoft.Office.Core.ICTPFactory CTPFactoryInst)

Die Schnittstelle ICTPFactory macht die Methode CreateCTP verfügbar. Die Syntax für diese Methode lautet:

Microsoft.Office.Core.ICTPFactory.CreateCTP (string CTPAxID, string CTPTitle, [Optional] object CTPParentWindow) As CustomTaskPane

Das Erstellen eines benutzerdefinierten Aufgabenbereichs ist ein unkomplizierter Vorgang. Zunächst erstellen Sie mit dem Windows Form und anderen ActiveX-Steuerelementen ein benutzerdefiniertes ActiveX-Steuerelement. Das Windows Form und die Steuerelemente stellen die Benutzeroberfläche dar, die Ihre Benutzer sehen.

Hinweis:   Wenn Sie in Ihrem ActiveX-Steuerelement Windows Forms verwenden, muss außerdem Microsoft .NET Framework 2.0 installiert sein. Wenn Sie Ihr ActiveX-Steuerelement in nicht verwaltetem Code erstellen, besteht keine Notwendigkeit für .NET Framework.

Unter Umständen können Sie vorgefertigte ActiveX-Steuerelemente verwenden, die Sie im Internet erwerben oder von dort herunterladen. Vorgefertigte Steuerelemente haben jedoch möglicherweise Einschränkungen; so sind sie beispielsweise u. U. nicht in der Lage, die Bildschirmanzeige zu aktualisieren, nachdem Höhe oder Breite geändert wurden. Sie können experimentieren, um herauszufinden, ob ein vorgefertigtes Steuerelement mit benutzerdefinierten Aufgabenbereichen kompatibel ist.

Als Nächstes erstellen Sie das COM-Add-In, das das Windows Form aufruft. Das Add-In enthält den Code zum Erstellen des benutzerdefinierten Aufgabenbereichs. Das Add-In kann zu verschiedenen Zeitpunkten geladen werden:

  • Wenn die Anwendung gestartet wird

  • Wenn der Benutzer die Anwendung über das Dialogfeld COM-Add-Ins ausdrücklich aufruft

  • Bei Bedarf, z. B. wenn der Benutzer auf eine benutzerdefinierte Symbolleisten-Schaltfläche klickt

Während des Ladens ruft die Anwendung die Methode CTPFactoryAvailable auf. Diese Methode gibt eine Instanz des Objekts CTPFactory weiter, das wiederum über die Schnittstelle ICTPFactory die Methode CreateCTP verfügbar macht. CreateCTP benötigt die Klassen-ID (CLSID) oder Programm-Nr (ProgID) des ActiveX-Steuerelements. CreateCTP gibt ein CustomTaskPane-Objekt zurück, das einen einzelnen, benutzerdefinierten Aufgabenbereich darstellt. Diese Instanz des Objekts CustomTaskPane bleibt im Speicher, bis das Add-In die Methode CustomTaskPane.Delete aufruft oder bis die Verbindung zum Add-In getrennt wird. Nachdem Sie den Aufgabenbereich erstellt haben, müssen Sie ihn ausdrücklich sichtbar machen, indem Sie die Eigenschaft Visible auf True setzen.

Der Aufgabenbereich bleibt sichtbar, bis Sie ihn ausdrücklich beenden, die Eigenschaft Visible des Objekts CustomTaskPane auf False setzen, oder die Methode Delete des Objekts CustomTaskPane aufrufen.

Optional akzeptiert CreateCTP auch ein Window-Objektargument: CTPParentWindow. Mit diesem Argument gibt das Add-In ein Dokumentfenster an, in dem der Aufgabenbereich bereitgestellt wird. In den meisten Fällen wird der Aufgabenbereich an ein bestimmtes Dokument gebunden, wenn dieses Argument festgelegt wird. Wenn dieses Argument nicht vorhanden ist, erstellt das Add-In das Objekt CustomTaskPane im aktiven Fenster der Hostanwendung. Sie geben diesen Parameter als Object (in C++ ein Variant) ein, da das hereingegebene Objekt je nach Hostanwendung unterschiedlich ist:

  • In Word ist es ein Window-Objekt

  • In Excel ist es ein Window-Objekt

  • In PowerPoint ist es ein DocumentWindow-Objekt

  • In InfoPath ist es ein Window-Objekt

  • In Outlook ist es ein Inspector- oder Explorer-Objekt

Theoretisch können Sie eine beliebige Anzahl benutzerdefinierter Aufgabenbereiche erstellen. Nur der Bildschirmbereich und Speichereinschränkungen begrenzen die Anzahl der Bereiche. Um jedoch die Einschränkungen zu minimieren, geben Sie in Ihrem Code für das Herunterfahren die Instanz CTPFactory und alle während der Lebensdauer dieser Instanz erstellten Aufgabenbereiche frei. Dies können Sie während des OnDisconnection-Ereignisses oder des OnBeginShutdown-Ereignisses der Schnittstelle IDTExtensibility2 erledigen.

Ein CustomTaskPane-Objekt stellt einen einzelnen Rahmen eines Aufgabenbereichs dar. In der folgenden Tabelle sind die Methoden, Eigenschaften und Ereignisse für dieses Objekt aufgeführt.

Tabelle 1: Einstellungen für das Objekt „CustomTaskPane“

Membertyp

Name

Typ

Anmerkungen

Eigenschaft

Anwendung

Objekt

Schreibgeschützt. Application-Objekt der Hostanwendung.

Eigenschaft

Window

Objekt

Schreibgeschützt. Übergeordnetes Window-Objekt. Der Typ ist abhängig von der Hostanwendung.

Eigenschaft

Visible

Boolesch

Steuert die Sichtbarkeit in der Benutzeroberfläche.

Eigenschaft

ContentControl

Objekt

Schreibgeschützt. Die im Rahmen des benutzerdefinierten Aufgabenbereichs angezeigte Instanz des ActiveX-Steuerelements. Diese Eigenschaft wird automatisch festgelegt, wenn CreateCTP aufgerufen wird.

Eigenschaft

Titel

LPSTR

Schreibgeschützt. Der für den Aufgabenbereich angezeigte Titel. Diese Eigenschaft wird automatisch festgelegt, wenn CreateCTP aufgerufen wird. Dies ist die Standardeigenschaft für die Benutzeroberfläche.

Eigenschaft

DockPosition

MsoCTPDockPosition

Legt die Optionen „Oben“, „Unten“, „Rechts“, „Links“ oder „Unverankert“ fest. Wenn Sie für die Benutzeroberfläche eine Sprache verwenden, die von rechts nach links geschrieben wird, wird der Aufgabenbereich standardmäßig rechts verankert. Wenn Sie für die Benutzeroberfläche eine Sprache verwenden, die von links nach rechts geschrieben wird, wird der Aufgabenbereich standardmäßig links verankert.

Eigenschaft

DockPositionRestrict

MsoCTPDockPositionRestrict

Gibt eine Beschränkung der Ausrichtung eines benutzerdefinierten Aufgabenbereichs an, z. B. horizontal oder vertikal. Der Standardwert lautet „Keine“.

Methode

Delete


Löscht den Aufgabenbereich, wodurch außerdem die Instanz des ActiveX-Steuerelements freigegeben wird.

Ereignis

VisibleStateChange


Tritt auf, wenn die Eigenschaft Visible geändert wird. Sie können den Wert der Eigenschaft überprüfen, um den neuen Status zu ermitteln.

Ereignis

DockPositionStateChange


Tritt auf, wenn die Eigenschaft DockPosition geändert wird. Sie können den Wert der Eigenschaft überprüfen, um den neuen Status zu ermitteln.

Enumeration

MsoCTPDockPosition


Enumeration

MsoCTPDockPositionRestrict


msoCTPDockPositionRestrictNone = 0,
msoCTPDockPositionRestrictNoChange = 1
msoCTPDockPositionRestrictNoHorizontal = 2,
msoCTPDockPositionRestrictNoVertical = 3

 

Erstellen benutzerdefinierter Aufgabenbereiche als COM-Add-Ins

In den folgenden Abschnitten erstellen Sie einen einfachen, benutzerdefinierten Aufgabenbereich für Office Word 2007. Mithilfe des Aufgabenbereichs können Benutzer einem Textfeld Text hinzufügen und dann auf eine Schaltfläche klicken, um das Dokument an der aktuellen Cursorposition auszufüllen.

Einen benutzerdefinierten Aufgabenbereich erstellen Sie aus einem COM-Add-In und einem ActiveX-Steuerelement. Der Großteil der Arbeit beim Erstellen des benutzerdefinierten Aufgabenbereichs wird von dem Add-In erledigt. Das ActiveX-Steuerelement stellt lediglich die Benutzeroberfläche bereit. Der Aufgabenbereich wird mit verwaltetem Code entwickelt, der in Visual C geschrieben wurde.

Erstellen benutzerdefinierter Aufgabenbereiche mit Visual C

In diesem Abschnitt erstellen Sie das ActiveX-Steuerelement für den benutzerdefinierten Aufgabenbereich. Das Steuerelement besteht aus einem Formular, das eine Bezeichnung, ein Textfeld und eine Schaltfläche enthält.

Abbildung 1: Beispiel für einen benutzerdefinierten Aufgabenbereich in Word
Abbildung 1: Beispiel für einen benutzerdefinierten Aufgabenbereich in Word

Dies ist die allgemeine Vorgehensweise (in den nächsten Abschnitten ausführlicher beschrieben) zum Erstellen eines ActiveX-Steuerelements für den benutzerdefinierten Aufgabenbereich.

  1. Erstellen Sie ein Visual C Windows-Steuerelementbibliothek-Projekt.

  2. Fügen Sie ein Formular ein, und fügen Sie dann ein Bezeichnungs-, ein Textfeld- und ein Schaltflächen-Steuerelement hinzu.

  3. Fügen Sie demjenigen Projekt eine öffentliche Schnittstelle hinzu, das das COM-Add-In benachrichtigt, wenn auf die Schaltfläche geklickt wird.

  4. Fügen Sie der Steuerelementklasse Code hinzu, um die Schnittstelle zu implementieren.

  5. Testen Sie das Projekt.

Erstellen des Windows-Steuerelementbibliothek-Projekts

Erstellen Sie mit den Schritten in diesem Abschnitt das ActiveX-Steuerelement, das in den benutzerdefinierten Aufgabenbereich eingefügt werden soll.

So erstellen Sie ein Windows-Steuerelementbibliothek-Projekt:
  1. Starten Sie Microsoft Visual Studio 2005.

  2. Klicken Sie im Menü Datei auf Neues Projekt.

  3. Wählen Sie im Dialogfeld Neues Projekt in der Liste Visual C-Projekte die Projektvorlage Windows-Steuerelementbibliothek aus. Geben Sie in das Feld Name den Text SampleActiveX ein, und klicken Sie auf OK.

  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf UserControl1.cs, und wählen Sie Code anzeigen aus.

  5. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt SampleActiveX, und klicken Sie dann auf Eigenschaften.

  6. Klicken Sie in der Registerkarte SampleActiveX auf Erstellen, und aktivieren Sie das Kontrollkästchen Für COM-Interop registrieren.

  7. Klicken Sie mit der rechten Maustaste auf die Registerkarte SampleActiveX, und klicken Sie dann auf Schließen.

  8. Wählen Sie im Menü Datei die Option Alle speichern. Klicken Sie im Dialogfeld Projekt speichern auf die Schaltfläche Speichern.

    Mithilfe der folgenden Schritte wird ein Verweis auf die Microsoft Office 12-Objektbibliothek und auf die primären interop-Assemblys in Office Word 2007 hinzugefügt:

  9. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verweise, und klicken Sie dann auf Verweis hinzufügen.

  10. Klicken Sie auf die Registerkarte COM, führen Sie einen Bildlauf zur Microsoft Office 12.0-Objektbibliothek durch, und klicken Sie auf OK.

  11. Die neuen Verweise werden im Projektmappen-Explorer unterhalb des Knotens Verweise angezeigt.

Jetzt ist das Projekt soweit, dass Sie dem Formular Steuerelemente hinzufügen können.

Hinzufügen von Windows-Steuerelementen zum benutzerdefinierten Steuerelement

In diesem Abschnitt fügen Sie dem im vorigen Abschnitt erstellten Steuerelement weitere Steuerelemente hinzu.

So fügen Sie dem Formular-Designer Steuerelemente hinzu:
  1. Wenn der Designer nicht bereits angezeigt wird, klicken Sie im Projektmappen-Explorer auf UserControl1.cs, und klicken Sie dann auf Designer anzeigen.

  2. Klicken Sie im Menü Ansicht auf Toolbox.

  3. Fügen Sie auf der Registerkarte Allgemeine Steuerelemente der Toolbox die Steuerelemente aus Tabelle 2 der Arbeitsfläche hinzu, und legen Sie anschließend deren Eigenschaften fest.

    Tabelle 2: Windows Forms-Steuerelemente für das benutzerdefinierte Steuerelement Steuerelementtyp Texteigenschaft Name-Eigenschaft Label Text eingeben label1 Textfeld leer txtInputText Button Zum Einfügen hier klicken btnInsert

  4. Klicken Sie in das Textfeld, und setzen Sie anschließend im Fenster Eigenschaften die Eigenschaft Multiline auf True.

Hinzufügen von Code zum Projekt

Als Nächstes fügen Sie den Code hinzu, der die Ereignishandler implementiert, um die Steuerelemente mit Funktionen auszustatten.

So implementieren Sie den Ereignishandler für das Klicken der Schaltfläche und initialisieren die Klasse UserControl1:
  1. Wenn das Codefenster nicht bereits angezeigt wird, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf UserControl1.cs, und klicken Sie dann auf Code anzeigen.

  2. Suchen Sie nach der Anweisung namespace SampleActiveX, und fügen Sie oberhalb folgende Zeilen ein:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO;

Diese Anweisungen können Aliase für den Namespace erstellen und Typen importieren, die in anderen Namespaces definiert sind.
  1. Fügen Sie nach der geöffneten geschweiften Klammer, direkt unterhalb der Anweisung namespace SampleActiveX, folgenden Code hinzu:

public interface SimpleActiveXControlInterface { event InsertTextEventHandler InsertTextClicked; } [ComVisible(true)]

Das ActiveX-Steuerelement hat eine öffentliche Schnittstelle, **SampleActiveXControlInterface**, mit einem einzigen Ereignis, **InsertTextClicked**, mit dem das Add-In benachrichtigt wird, wenn der Benutzer auf die Schaltfläche klickt. An dieser Stelle können Sie zusätzliche Ereignisse, Methoden oder Objekte einschließen, die für Ihr Add-In erforderlich sind.
  1. Geben Sie an, dass die Klasse myControl die Schnittstelle SampleActiveXControlInterface implementiert, indem Sie die Anweisung public partial class UserControl1 : UserControl durch folgenden Code ersetzen:

public partial class myControl : System.Windows.Forms.UserControl, SampleActiveXControlInterface

  1. Ersetzen Sie die Anweisung public UserControl1() durch den folgenden Code:

public myControl() { // This call is required by the Form Designer in Windows.Forms. InitializeComponent();

btnInsert.Click += new EventHandler(btnInsert_Click); }

Als Nächstes initialisiert dieser Code das Steuerelement und richtet den Ereignishandler für die Schaltfläche ein.
  1. Fügen Sie unterhalb der schließenden geschweiften Klammer der Routine public UserControl1 den Ereignishandler für die Schaltfläche hinzu:

private void btnInsert_Click(object sender, EventArgs e) { string textBoxText = this. txtInputText.Text; this.InsertTextClicked(this, textBoxText); }

  1. Fügen Sie direkt unterhalb der Prozedur, die Sie im vorangegangenen Schritt hinzugefügt haben, den folgenden Code ein:

public delegate void InsertTextEventHandler(object sender, string insertTextArgs);

Mit diesem Code wird ein Stellvertreter für den Ereignishandler der Schaltfläche definiert, der vom Add-In-Projekt verwendet wird.
  1. Klicken Sie im Menü Datei auf Alle speichern, und klicken Sie dann auf Projekt schließen.

    Im nächsten Schritt müssen Sie das ActiveX-Steuerelement registrieren.

  2. Öffnen Sie ein Eingabeaufforderungsfenster: Klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Zubehör, und klicken Sie dann auf Eingabeaufforderung.

  3. Geben Sie Folgendes in das Eingabeaufforderungsfenster ein:

    "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm" /Codebasis"C:\Pfad zu Ihrem Projekt\SampleActiveX.dll"

Erstellen gemeinsamer Add-Ins für benutzerdefinierte Aufgabenbereiche

Mit dem Assistenten für gemeinsames Add-In in Visual Studio 2005 erstellen Sie ein Add-In, das den benutzerdefinierten Aufgabenbereich erstellt, wenn es geladen wird.

Das von Visual Studio 2005 erstellte gemeinsame Add-In ist eine .NET-Assembly mit der Dateierweiterung .dll. Obwohl es sich nicht um eine COM-DLL handelt, fügt Visual Studio 2005 genügend Informationen hinzu, um ein COM-Add-In nachzuahmen, wenn Anwendungen der Version 2007 von Office das Add-In zur Laufzeit laden.

  1. Klicken Sie im Menü Datei auf Neues Projekt.

  2. Erstellen Sie ein neues Gemeinsames Add-In-Projekt.

    Sie können diesen Projekttyp finden, indem Sie im Bereich Projekttypen auf Weitere Projekttypen und dann auf Erweiterbarkeit klicken.

  3. Geben Sie in das Feld Name den Text SampleCTPAddin ein, und klicken Sie auf OK.

  4. Klicken Sie im Assistenten für gemeinsames Add-In auf Weiter, um auf die Seite Willkommen zu gelangen.

  5. Klicken Sie im Bereich Wählen Sie eine Programmiersprache aus auf Ein Add-In mit Visual C erstellen.

  6. Deaktivieren Sie auf der Seite Wählen Sie einen Anwendungshost aus alle Kontrollkästchen bis auf Microsoft Word, und klicken Sie dann auf Weiter.

    Damit wird die Anwendung angegeben, in der das Add-In nach seiner Erstellung ausgeführt wird.

  7. Geben Sie auf der Seite Geben Sie einen Namen und eine Beschreibung ein als Namen des Add-Ins Sample CTP Addin ein. Deaktivieren Sie das Beschreibungsfeld, und klicken Sie dann auf Weiter.

    Dieser Name wird in der Liste Verfügbare Add-Ins des Dialogfelds Add-In Manager angezeigt. Er informiert über die Arbeits- und Funktionsweise des Add-Ins und stellt weitere relevante Informationen bereit.

  8. Aktivieren Sie im Bereich Wählen Sie die Add-In-Optionen aus das Kontrollkästchen Das Add-In laden, wenn die Hostanwendung geladen wird, und klicken Sie dann auf Weiter.

  9. Klicken Sie auf Fertig stellen, um das Add-In zu erstellen.

Der Assistent für gemeinsames Add-In registriert das Add-In auf Ihrem Entwicklungscomputer automatisch bei Microsoft Windows.

Hinweis:   Mithilfe der von .NET Framework Version 2.0 bereitgestellten Datei Regasm.exe können Sie das Add-In manuell registrieren. Geben Sie unter Verwendung des Standardspeicherorts am Eingabeaufforderungsfenster folgenden Befehl ein:

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm"/Codebasis "C:\Pfad zu Ihrem Projekt\SampleCTPAddin.dll"

Hinzufügen von Funktionen zu Add-Ins

Durch Hinzufügen der folgenden Prozeduren zum Projekt SampleCTPAddin wird Ihr Add-In nützlich, indem sein Verhalten beim Laden und Entladen eingestellt wird. Dies geschieht, wenn Office Word 2007 gestartet bzw. heruntergefahren wird. Die Prozeduren erstellen außerdem eine Instanz des Aufgabenbereichs und fügen den Code hinzu, durch den die Schaltfläche in Betrieb genommen wird.

So fügen Sie einen Verweis auf die Microsoft Office 12-Objektbibliothek und die primären interop-Assemblys in Word 2007 hinzu:
  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verweise, und klicken Sie dann auf Verweis hinzufügen.

  2. Klicken Sie im Dialogfeld Verweis hinzufügen auf die Registerkarte .NET.

  3. Führen Sie einen Bildlauf durch, und wählen Sie Microsoft.Office.Interop.Word aus. Klicken Sie anschließend auf OK.

  4. Rufen Sie wiederum das Dialogfeld Verweis hinzufügen auf. Führen Sie auf der Registerkarte COM einen Bildlauf zur Microsoft Office 12.0-Objektbibliothek durch, wählen Sie sie aus, und klicken Sie dann auf OK.

  5. In dem Projekt wird mithilfe des MessageBox-Objekts der Status des Add-Ins beim Laden und Entladen gemeldet. Falls er nicht bereits vorhanden ist, müssen Sie im Dialogfeld Verweis hinzufügen auf der Registerkarte .NET mithilfe der zuvor beschriebenen Vorgehensweisen einen Verweis auf die Komponente System.Windows.Forms festlegen.

    Die neuen Verweise werden unterhalb des Knotens Verweise des Projekts angezeigt.

  6. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Connect.cs, und wählen Sie Code anzeigen aus.

  7. Fügen Sie unterhalb der Anweisung namespace SampleCTPAddin folgenden Code hinzu:

using System; using Microsoft.Office.Core; using Extensibility; using System.Runtime.InteropServices; using System.Windows.Forms; using SampleActiveX; using WordPia = Microsoft.Office.Interop.Word;

  1. Geben Sie am Ende der öffentlichen Klassenanweisung Connect :, nach Extensibility.IDTExtensibility2, ein Komma und ICustomTaskPaneConsumer ein.

    Die Schnittstelle ICustomTaskPaneInterface verfügt über eine Methode, CTPFactoryAvailable, die eine Instanz des CTPFactory-Objekts für die Hostanwendung zurückgibt.

    Hinweis:   Zu einem früheren Zeitpunkt im Projekt haben Sie einen Verweis auf das Objekt der Hostanwendung hinzugefügt. Die Methode OnConnection legt das applicationObject-Objekt auf die Instanz von Office Word 2007 fest, die den benutzerdefinierten Aufgabenbereich bereitstellt. Dadurch erhält das Add-In vollen Zugriff auf das Objektmodell in Office Word 2007.

  2. Fügen Sie direkt unterhalb der Anweisung public class Connect() folgenden Code hinzu, um ein Objekt zu erstellen, das auf die Klasse UserControl1 verweist, und um eine Variable für die primären interop-Assemblys in Office Word 2007 zu erstellen:

private myControl sampleAX = null; private WordPia.Application applicationObject;

  1. Ersetzen Sie in der Prozedur OnConnection die Anweisungen durch folgenden Code:

applicationObject = (WordPia.Application)application; addInInstance = addInInst;

MessageBox.Show("SampleCTPAddin is loaded.");

Die Anweisung **MessageBox** versichert Ihnen, dass das Add-In erfolgreich in Office Word 2007 geladen wird.
  1. Fügen Sie der Prozedur OnBeginShutDown folgenden Code hinzu:

MessageBox.Show("SampleCTPAddin is unloading.");

  1. Führen Sie einen Bildlauf nach unten durch, bis Sie die Anweisung private object applicationObject; sehen, und löschen Sie sie dann.

  2. Fügen Sie nach der Anweisung private object addInInstance; folgenden Code hinzu, der die Methode CTPFactoryAvailable der Schnittstelle ICustomTaskPaneConsumer implementiert und ein CTPFactoryInst-Objekt zurückgibt.

region ICustomTaskPaneConsumer Members

object missing = Type.Missing; public CustomTaskPane CTP = null;

public void CTPFactoryAvailable(ICTPFactory CTPFactoryInst) { CTP = CTPFactoryInst.CreateCTP("SampleActiveX.myControl", "Task Pane Example", missing);
sampleAX = (myControl)CTP.ContentControl; sampleAX.InsertTextClicked += new InsertTextEventHandler(sampleAX_InsertTextClicked); CTP.Visible = true; }

endregion

Der Code ruft die Methode **CreateCTP** des Objekts **CTPFactoryInst** auf, um ein neues **Custom Task Pane**-Objekt zu erstellen. Das Objekt verweist durch seinen **ProgId**-Wert auf das Steuerelement **SimpleActiveX**. Obwohl dadurch der benutzerdefinierte Aufgabenbereich erstellt wird, wird dieser erst sichtbar, wenn Sie die Eigenschaft **CTP.Visible** auf **True** setzen.

Das Add-In verwendet einen Verweis auf das Steuerelement **SampleActiveX**, und der folgende Code legt das **sampleAX**-Objekt für das ActiveX-Steuerelement fest:

<pre IsFakePre="true" xmlns="http://www.w3.org/1999/xhtml">

sampleAX = (myControl) CTP.ContentControl;

  1. Fügen Sie den folgenden Code hinzu, mit dem der Text in das Dokument eingefügt wird, wenn der Benutzer auf die Schaltfläche klickt:

private void sampleAX_InsertTextClicked(object sender, string insertTextArgs) { WordPia.Range myRange = null; myRange = applicationObject.ActiveDocument.Content; myRange.InsertAfter(insertTextArgs);

}

So erstellen und testen Sie das Add-In:
  1. Klicken Sie im Menü Datei auf Alles speichern, um das Projekt zu speichern.

  2. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

    Wenn Sie das Projekt ohne Buildfehler kompilieren können, fügt der Code das Add-In an diesem Speicherort automatisch der Registrierung hinzu:

HKLM\Software\Microsoft\Office\Word\Addins\SampleCTPAddin.Connect

Wenn das Add-In beim Starten von Office Word 2007 nicht geladen wird, überprüfen Sie das Vorhandensein dieses Registrierungsschlüssels. In dem Schlüssel sollte ein DWORD namens **LoadBehavior** mit einem Wert von **0x0000003(3)** angezeigt werden.

**Wichtig:**   Erstellen Sie eine Sicherungskopie, bevor Sie die Registrierung verändern. Außerdem sollten Sie wissen, wie Sie die Registrierung wieder herstellen können, falls ein Fehler auftritt. Weitere Informationen zum Sichern, Wiederherstellen und Ändern der Registrierung finden Sie in dem Microsoft Knowledge Base-Artikel mit dem Titel [Beschreibung der Microsoft Windows-Registrierung](https://support.microsoft.com/default.aspx?scid=kb;en-us;256986).
  1. Starten Sie Word 2007, um das Add-In zu testen.

  2. Wenn eine Meldung angezeigt wird, dass SampleCTPAddin geladen wird, klicken Sie auf OK.

  3. Wenn der Aufgabenbereich Task Pane Example an der rechten Seite des aktiven Fensters verankert ist, klicken Sie in das Textfeld, und geben Sie anschließend ein wenig Text ein.

  4. Klicken Sie auf die Schaltfläche Zum Einfügen hier klicken, um den eingegebenen Text an der ausgewählten Stelle in das Dokument einzugeben.

  5. Ziehen Sie den Aufgabenbereich an eine andere Seite des aktiven Fensters.

 

Schlussbemerkung

Seit Aufgabenbereiche in Office XP eingeführt wurden, sind sie eine wichtige Funktion von Microsoft Office. Aufgabenbereiche ersetzen viele Dialogfelder, die u. U. schwer zu finden und häufig mit Optionen überladen sind, die für die aktuelle Aufgabe nicht von Bedeutung sind. Durch die benutzerdefinierten Aufgabenbereiche in Version 2007 von Microsoft Office werden relevante Funktionen an einen Ort gerückt, wo Benutzer sie finden können, wenn sie sie benötigen. Benutzerdefinierte Aufgabenbereiche bieten Ihnen eine Möglichkeit, Ihren Benutzern mehr Funktionalität bereitzustellen, ohne den wertvollen Arbeitsbereich zu verbrauchen. Benutzerdefinierte Aufgabenbereiche sind eine wichtige Ergänzung für die Toolbox eines Office-Entwicklers.

 

Weitere Ressourcen

Weitere Informationen zum Erstellen benutzerdefinierter Anwendungen zum Anzeigen von Inhalten und Steuerelementen finden Sie in den folgenden Ressourcen. Obwohl diese Artikel für Office XP verfasst wurden, sind sie immer noch für die Version 2007 von Microsoft Office von Bedeutung.