Freigeben über


Exemplarische Vorgehensweise: Aufrufen von Code in einem Add-In auf Anwendungsebene von VBA

Diese exemplarische Vorgehensweise veranschaulicht, wie ein Objekt in einem Add-In auf Anwendungsebene für andere Microsoft Office-Projektmappen einschließlich VBA (Visual Basic for Applications)- und COM-Add-Ins verfügbar gemacht wird.

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

Obwohl in dieser exemplarischen Vorgehensweise speziell Excel verwendet wird, gelten die Konzepte in dieser exemplarischen Vorgehensweise für alle von Visual Studio bereitgestellten Add-In-Projektvorlagen.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Definieren einer Klasse, die für andere Office-Projektmappen verfügbar gemacht werden kann

  • Verfügbarmachen der Klasse für andere Office-Projektmappen

  • Aufrufen einer Methode der Klasse von VBA-Code

Tipp

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

-

Eine Version von Visual Studio 2010, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.100\).md).
  • Excel 2007 oder Excel 2010

Link zu Video Eine Videodemo dieses Themas finden Sie unter Video How to: Calling Code in an Application-Level Add-in from VBA.

Erstellen des Add-In-Projekts

Im ersten Schritt erstellen Sie ein Add-In-Projekt für Excel.

So erstellen Sie ein neues Projekt

  • Erstellen Sie ein Excel-Add-In-Projekt mit dem Namen "ExcelImportData" unter Verwendung der Excel-Add-In-Projektvorlage. Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen von Office-Projekten in Visual Studio.

    Visual Studio öffnet die Codedatei ThisAddIn.cs oder ThisAddIn.vb und fügt dem Projektmappen-Explorer das Projekt ExcelImportData hinzu.

Definieren einer Klasse, die für andere Office-Projektmappen verfügbar gemacht werden kann

Das Ziel dieser exemplarischen Vorgehensweise besteht darin, einen Aufruf in die ImportData-Methode einer Klasse namens AddInUtilities in Ihrem Add-In von VBA-Code auszuführen. Diese Methode schreibt eine Zeichenfolge in Zelle A1 des aktiven Arbeitsblatts.

Um die AddInUtilities-Klasse für andere Office-Projektmappen verfügbar zu machen, müssen Sie die Klasse öffentlich und für COM sichtbar machen. Sie müssen auch die IDispatch-Schnittstelle in der Klasse verfügbar machen. Im Code in der folgenden Prozedur wird eine Möglichkeit veranschaulicht, diese Anforderungen zu erfüllen. Weitere Informationen finden Sie unter Aufrufen von Code in Add-Ins auf Anwendungsebene von anderen Office-Projektmappen.

So definieren Sie eine Klasse, die Sie für andere Office-Projektmappen verfügbar machen können

  1. Klicken Sie im Menü Projekt auf Klasse hinzufügen.

  2. Ändern Sie im Dialogfeld Neues Element hinzufügen den Namen der neuen Klasse in AddInUtilities, und klicken Sie auf Hinzufügen.

    Die Datei AddInUtilities.cs oder AddInUtilities.vb wird im Code-Editor geöffnet.

  3. Fügen Sie am Anfang der Datei die folgenden Anweisungen ein.

    Imports System.Data
    Imports System.Runtime.InteropServices
    Imports Excel = Microsoft.Office.Interop.Excel
    
    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. Ersetzen Sie die AddInUtilities-Klasse durch folgenden Code.

    <ComVisible(True)> _
    Public Interface IAddInUtilities
        Sub ImportData()
    End Interface
    
    <ComVisible(True)> _
    <ClassInterface(ClassInterfaceType.None)> _
    Public Class AddInUtilities
        Implements IAddInUtilities
    
        ' This method tries to write a string to cell A1 in the active worksheet.
        Public Sub ImportData() Implements IAddInUtilities.ImportData
    
            Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet
    
            If activeWorksheet IsNot Nothing Then
                Dim range1 As Excel.Range = activeWorksheet.Range("A1")
                range1.Value2 = "This is my data"
            End If
        End Sub
    End Class
    
    [ComVisible(true)]
    public interface IAddInUtilities
    {
        void ImportData();
    }
    
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    public class AddInUtilities : IAddInUtilities
    {
        // This method tries to write a string to cell A1 in the active worksheet.
        public void ImportData()
        {
            Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet;
    
            if (activeWorksheet != null)
            {
                Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing);
                range1.Value2 = "This is my data";
            }
        }
    }
    

    Dieser Code macht die AddInUtilities-Klasse für COM sichtbar und fügt die ImportData-Methode zur Klasse hinzu. Um die IDispatch-Schnittstelle verfügbar zu machen, verfügt die AddInUtilities-Klasse auch über das ClassInterfaceAttribute-Attribut, und sie implementiert eine Schnittstelle, die für COM sichtbar ist.

Verfügbarmachen der Klasse für andere Office-Projektmappen

Um die AddInUtilities-Klasse für andere Office-Projektmappen verfügbar zu machen, überschreiben Sie die RequestComAddInAutomationService-Methode in der ThisAddIn-Klasse. Geben Sie in der Überschreibung eine Instanz der AddInUtilities-Klasse zurück.

So machen Sie die AddInUtilities-Klasse für andere Office-Projektmappen verfügbar

  1. Erweitern Sie im Projektmappen-Explorer die Option Excel.

  2. Klicken Sie mit der rechten Maustaste auf ThisAddIn.cs oder ThisAddIn.vb, und klicken Sie dann auf Code anzeigen.

  3. Fügen Sie der ThisAddIn-Klasse folgenden Code hinzu.

    Private utilities As AddInUtilities
    
    Protected Overrides Function RequestComAddInAutomationService() As Object
        If utilities Is Nothing Then
            utilities = New AddInUtilities()
        End If
        Return utilities
    End Function
    
    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

    Überprüfen Sie, ob sich die Projektmappe fehlerfrei erstellen lässt.

Testen des Add-Ins

Sie können einen Aufruf in die AddInUtilities-Klasse von verschiedenen Typen von Office-Projektmappen durchführen. In dieser exemplarischen Vorgehensweise verwenden Sie VBA-Code in einer Excel-Arbeitsmappe. Weitere Informationen über die anderen Typen von Office-Projektmappen, die Sie ebenfalls verwenden können, finden Sie unter Aufrufen von Code in Add-Ins auf Anwendungsebene von anderen Office-Projektmappen.

So testen Sie das Add-In

  1. Drücken Sie F5, um das Projekt auszuführen.

  2. Speichern Sie in Excel die aktive Arbeitsmappe als Excel-Arbeitsmappe mit Makros (* .xlsm). Speichern Sie sie an einem geeigneten Speicherort, z. B. auf dem Desktop.

  3. Klicken Sie auf dem Menüband auf die Registerkarte Entwickler.

    Tipp

    Wenn die Registerkarte Entwickler nicht sichtbar ist, müssen Sie diese zuerst anzeigen. Weitere Informationen finden Sie unter Gewusst wie: Anzeigen der Registerkarte "Entwickler" auf der Multifunktionsleiste.

  4. Klicken Sie in der Gruppe Code auf Visual Basic.

    Der Visual Basic-Editor wird geöffnet.

  5. Doppelklicken Sie im Fenster Projekt auf ThisWorkbook.

    Die Codedatei für das ThisWorkbook-Objekt wird geöffnet.

  6. Fügen Sie der Codedatei den folgenden VBA-Code hinzu. Dieser Code ruft zunächst ein COMAddIn-Objekt ab, das das ExcelImportData-Add-In darstellt. Anschließend verwendet der Code die Object-Eigenschaft des COMAddIn-Objekts zum Aufrufen der ImportData-Methode.

    Sub CallVSTOMethod()
        Dim addIn As COMAddIn
        Dim automationObject As Object
        Set addIn = Application.COMAddIns("ExcelImportData")
        Set automationObject = addIn.Object
        automationObject.ImportData
    End Sub
    
  7. Drücken Sie F5.

  8. Vergewissern Sie sich, dass der Arbeitsmappe ein neues Imported Data-Blatt hinzugefügt wurde. Stellen Sie außerdem sicher, dass die Zelle A1 die Zeichenfolge This is my data enthält.

  9. Beenden Sie Excel.

Nächste Schritte

Mehr über die Programmierung von Add-Ins erfahren Sie in den folgenden Themen:

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

Anpassen von Features der Benutzeroberfläche mithilfe von Erweiterungsschnittstellen

Architektur von Add-Ins auf Anwendungsebene

Weitere Ressourcen

Programmieren von Add-Ins auf Anwendungsebene

Entwickeln von Office-Projektmappen