Exemplarische Vorgehensweise: Aufrufen von Code in einem VSTO-Add-In aus VBA

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

Gilt für: Die Informationen in diesem Thema gelten für VSTO-Add-In-Projekte. Weitere Informationen finden Sie unter features available by Office-App lication and project type.

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

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 aus VBA-Code

    Hinweis

    Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

Voraussetzungen

Zum Abschließen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

Erstellen des VSTO-Add-In-Projekts

Der erste Schritt ist das Erstellen eines VSTO-Add-In-Projekts für Excel.

So erstellen Sie ein neues Projekt

  1. Erstellen Sie ein VSTO-Add-In-Projekt für Excel namens ExcelImportData, indem Sie die Excel-VSTO-Add-In-Projektvorlage verwenden. Weitere Informationen finden Sie unter How to: Create Office Projects in Visual Studio.

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

Definieren einer Klasse, die Sie anderen Office-Lösungen zur Verfügung stellen können

Der Zweck dieser exemplarischen Vorgehensweise besteht im Aufrufen der ImportData -Methode einer Klasse mit dem Namen AddInUtilities in Ihrem VSTO-Add-In aus VBA-Code. Mit dieser Methode wird eine Zeichenfolge in die Zelle A1 des aktiven Arbeitsblatts geschrieben.

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. Außerdem müssen Sie die IDispatch -Schnittstelle in der Klasse verfügbar machen. Mit dem Code in der folgenden Prozedur wird eine Möglichkeit zum Erfüllen dieser Anforderungen veranschaulicht. Weitere Informationen finden Sie unter Calling Code in VSTO Add-ins from Other Office Solutions.

So definieren Sie eine Klasse, die für andere Office-Projektmappen verfügbar gemacht werden kann

  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 folgende -Anweisung hinzu:

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

    [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";
            }
        }
    }
    

    Mit diesem Code wird die AddInUtilities -Klasse für COM sichtbar, und die ImportData -Methode wird der Klasse hinzugefügt. Zum Verfügbarmachen der IDispatch -Schnittstelle verfügt die AddInUtilities -Klasse auch über das ClassInterfaceAttribute -Attribut und implementiert eine Schnittstelle, die für COM sichtbar ist.

Verfügbarmachen der Klasse für andere Office-Lösungen

Um die AddInUtilities -Klasse für andere Office-Projektmappen verfügbar zu machen, setzen Sie die RequestComAddInAutomationService -Methode in der ThisAddIn -Klasse außer Kraft. Geben Sie bei der Außerkraftsetzung 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-Explorerdie Option Excel.

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

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

    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 die Lösung ohne Fehler erstellt wurde.

Testen des VSTO-Add-Ins

Sie können die AddInUtilities -Klasse aus unterschiedlichen Arten von Office-Projektmappen aufrufen. In dieser exemplarischen Vorgehensweise verwenden Sie VBA-Code in einer Excel-Arbeitsmappe. Weitere Informationen zu den anderen Typen von Office-Lösungen, die Sie auch verwenden können, finden Sie unter Anrufcode in VSTO-Add-Ins aus anderen Office-Lösungen.

So testen Sie Ihr VSTO-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 im Menüband auf die Registerkarte Entwickler .

    Hinweis

    Wenn die Registerkarte Entwickler nicht sichtbar ist, müssen Sie diese zuerst anzeigen. Weitere Informationen finden Sie unter How to: Show the developer tab on the Ribbon.

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

    Der Visual Basic-Editor wird geöffnet.

  5. Doppelklicken Sie im Projektfenster auf DieseArbeitsmappe.

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

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

    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. Überprüfen Sie, ob der Arbeitsmappe ein neues Arbeitsblatt mit dem Namen Imported Data hinzugefügt wurde. Überprüfen Sie auch, ob die Zelle A1 die Zeichenfolge This is my dataenthält.

  9. Beenden Sie Excel.

Nächste Schritte

In den folgenden Themen erhalten Sie weitere Informationen zum Programmieren von VSTO-Add-Ins: