Freigeben über


Anpassen von Features der Benutzeroberfläche mithilfe von Erweiterungsschnittstellen

Die Office-Entwicklungstools in Visual Studio stellen Klassen und Designer, die viele Implementierungsdetails behandeln, wenn Sie sie verwenden, um benutzerdefinierte Aufgabenbereiche, angepasste Menübänder und Outlook-Formularbereiche in einem Add-In auf Anwendungsebene erstellen.Sie können die Erweiterungsschnittstelle für jede Funktion jedoch auch selbst implementieren, wenn Sie besondere Anforderungen haben.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Anwendungsebene für Microsoft Office 2013 und Microsoft Office 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

Übersicht über Erweiterungsschnittstellen

Microsoft Office definiert einen Satz von Erweiterungsschnittstellen, die COM-Add-Ins implementieren können, um bestimmte Funktionen anpassen, wie das Menüband.Diese Schnittstellen geben volle Kontrolle über die Funktionen bereit, auf die sie Zugriff gewähren.Die Implementierung dieser Schnittstellen erfordert jedoch Kenntnisse der COM-Interoperabilität in verwaltetem Code.In einigen Fällen ist das Programmiermodell dieser Schnittstellen auch für Entwickler nicht intuitiv, die mit .NET Framework vertraut sind.

Wenn Sie ein Add-In erstellen, indem Sie die Office-Projektvorlagen in Visual Studio verwenden, müssen Sie die Erweiterungsschnittstellen nicht implementieren, um Funktionen wie das Menüband anzupassen.Diese Schnittstellen werden von der Visual Studio-Tools für Office-Laufzeit implementiert.Stattdessen können Sie intuitivere Klassen und von Visual Studio bereitgestellte Designer verwenden.Sie können Erweiterungsschnittstellen aber auch direkt im Add-In implementieren, wenn Sie möchten.

Weitere Informationen über die Klassen und Designer, die Visual Studio für diese Funktionen bereitstellt, finden Sie unter Benutzerdefinierte Aufgabenbereiche, Multifunktionsleisten-Designer und Erstellen von Outlook-Formularbereichen.

In einem Add-In implementierbare Erweiterungsschnittstellen

In der folgenden Tabelle werden die implementierbaren Erweiterungsschnittstellen und die Anwendungen, die sie unterstützen, aufgeführt.

Schnittstelle

Description

Anwendungen

Microsoft.Office.Core.IRibbonExtensibility

Implementieren Sie diese Schnittstelle, um die Benutzeroberfläche des Menübands anzupassen.

HinweisHinweis
Sie können einem Projekt ein Element Menüband (XML) hinzufügen, um eine Standardimplementierung von Microsoft.Office.Core.IRibbonExtensibility im Add-In zu generieren.Weitere Informationen finden Sie unter Multifunktionsleisten-XML.

Excel 2013

InfoPath 2013

Outlook 2013

PowerPoint 2013

Project 2013

Visio 2013

Word 2013

Excel 2010

InfoPath 2010

Outlook 2010

PowerPoint 2010

Project 2010

Visio 2010

Word 2010

Microsoft.Office.Core.ICustomTaskPaneConsumer

Implementieren Sie diese Schnittstelle, um einen benutzerdefinierten Aufgabenbereich zu erstellen.

Excel 2013

Outlook 2013

PowerPoint 2013

Word 2013

Excel 2010

Outlook 2010

PowerPoint 2010

Word 2010

Microsoft.Office.Interop.Outlook.FormRegionStartup

Implementieren Sie diese Schnittstelle, um einen Outlook-Formularbereich zu erstellen.

Outlook 2013

Outlook 2010

Es gibt noch andere Erweiterungsschnittstellen, die in Microsoft Office definiert werden, z. B. Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider und Microsoft.Office.Core.SignatureProvider.In Visual Studio wird das Implementieren dieser Schnittstellen in einem mit den Office-Projektvorlagen erstellten Add-In nicht unterstützt.

Verwenden von Erweiterungsschnittstellen

Um ein Feature der Benutzeroberfläche mit einer Erweiterungsschnittstelle anzupassen, implementieren Sie die entsprechende Schnittstelle im Add-In-Projekt.Überschreiben Sie anschließend die RequestService-Methode, um eine Instanz der Klasse zurückzugeben, die die Schnittstelle implementiert.

Eine Beispielanwendung, die veranschaulicht, wie die Microsoft.Office.Core.IRibbonExtensibility-, Microsoft.Office.Core.ICustomTaskPaneConsumer- und Microsoft.Office.Interop.Outlook.FormRegionStartup-Schnittstellen in einem Add-In für Outlook implementiert werden, finden Sie im UI-Manager-Beispiel unter Office-Entwicklungsbeispiele.

Bb608601.collapse_all(de-de,VS.110).gifBeispiel für das Implementieren einer Erweiterungsschnittstelle

Im folgenden Codebeispiel wird eine einfache Implementierung der Microsoft.Office.Core.ICustomTaskPaneConsumer-Schnittstelle veranschaulicht, um einen benutzerdefinierten Aufgabenbereich zu erstellen.In diesem Beispiel werden zwei Klassen definiert:

  • Die TaskPaneHelper-Klasse implementiert Microsoft.Office.Core.ICustomTaskPaneConsumer, um einen benutzerdefinierten Aufgabenbereich zu erstellen und anzuzeigen.

  • Die TaskPaneUI-Klasse stellt die Benutzeroberfläche des Aufgabenbereichs zur Verfügung.Die Attribute für die TaskPaneUI-Klasse machen die Klasse für COM sichtbar, sodass Microsoft Office-Anwendungen die Klasse erkennen können.In diesem Beispiel besteht die Benutzeroberfläche aus einem leeren UserControl, Sie können jedoch durch Ändern des Codes Steuerelemente hinzufügen.

    HinweisHinweis

    Um die TaskPaneUI-Klasse für COM verfügbar zu machen, müssen Sie auch die Register for COM Interop-Eigenschaft für das Projekt festlegen.Weitere Informationen finden Sie unter Verwalten von Kompilierungseigenschaften.

Public Class TaskPaneHelper
    Implements Office.ICustomTaskPaneConsumer

    Friend taskPane As Office.CustomTaskPane

    Public Sub CTPFactoryAvailable(ByVal CTPFactoryInst As Office.ICTPFactory) _
        Implements Office.ICustomTaskPaneConsumer.CTPFactoryAvailable

        If CTPFactoryInst IsNot Nothing Then
            ' Create a new task pane.
            taskPane = CTPFactoryInst.CreateCTP( _
                "Microsoft.Samples.Vsto.VB.TaskPaneUI", "Contoso")
            taskPane.Visible = True
        End If
    End Sub
End Class

<System.Runtime.InteropServices.ComVisible(True)> _
<System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.VB.TaskPaneUI")> _
<System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")> _
Public Class TaskPaneUI
    Inherits UserControl
End Class
public class TaskPaneHelper : Office.ICustomTaskPaneConsumer
{
    internal Office.CustomTaskPane taskPane;

    public void CTPFactoryAvailable(Office.ICTPFactory CTPFactoryInst)
    {
        if (CTPFactoryInst != null)
        {
            // Create a new task pane.
            taskPane = CTPFactoryInst.CreateCTP(
                "Microsoft.Samples.Vsto.CS.TaskPaneUI",
                "Contoso");
            taskPane.Visible = true;
        }
    }
}

[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.CS.TaskPaneUI")]
[System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")]
public class TaskPaneUI : UserControl
{
}

Weitere Informationen zum Implementieren von Microsoft.Office.Core.ICustomTaskPaneConsumer finden Sie unter Erstellen benutzerdefinierter Aufgabenbereiche in 2007 Office System in der Dokumentation zu Microsoft Office.

Bb608601.collapse_all(de-de,VS.110).gifBeispiel für das Überschreiben der RequestService-Methode

Im folgenden Codebeispiel wird veranschaulicht, wie die RequestService-Methode überschrieben wird, um eine Instanz der TaskPaneHelper-Klasse aus dem vorigen Codebeispiel zurückzugeben.Der Wert des serviceGuid-Parameters wird überprüft, um zu bestimmen, welche Erweiterungsschnittstelle angefordert wird. Anschließend wird ein Objekt zurückgegeben, das diese Schnittstelle implementiert.

Friend taskPaneHelper1 As TaskPaneHelper

Protected Overrides Function RequestService( _
    ByVal serviceGuid As Guid) As Object

    If (serviceGuid = GetType(Office.ICustomTaskPaneConsumer).GUID) Then
        If (taskPaneHelper1 Is Nothing) Then
            taskPaneHelper1 = New TaskPaneHelper()
        End If
        Return taskPaneHelper1
    End If

    Return MyBase.RequestService(serviceGuid)
End Function
internal TaskPaneHelper taskPaneHelper1;

protected override object RequestService(Guid serviceGuid)
{
    if (serviceGuid == typeof(Office.ICustomTaskPaneConsumer).GUID)
    {
        if (taskPaneHelper1 == null)
        {
            taskPaneHelper1 = new TaskPaneHelper();
        }
        return taskPaneHelper1;
    }

    return base.RequestService(serviceGuid);
}

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Office-Projekten in Visual Studio

Konzepte

Aufrufen von Code in Add-Ins auf Anwendungsebene von anderen Office-Projektmappen

Architektur von Add-Ins auf Anwendungsebene

Weitere Ressourcen

Beispiele und exemplarische Vorgehensweisen für die Programmierung mit Office

Programmieren von Add-Ins auf Anwendungsebene

Entwickeln von Office-Projektmappen