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:
Eine Edition von Visual Studio, die die Microsoft Office-Entwicklungstools umfasst. Weitere Informationen finden Sie unter Konfigurieren eines Computers zum Entwickeln von Office-Lösungen.
Microsoft Excel
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
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
Klicken Sie im Menü Projekt auf Klasse hinzufügen.
Ä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.
Fügen Sie am Anfang der Datei die folgende -Anweisung hinzu:
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 dieImportData
-Methode wird der Klasse hinzugefügt. Zum Verfügbarmachen der IDispatch -Schnittstelle verfügt dieAddInUtilities
-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
Erweitern Sie im Projektmappen-Explorerdie Option Excel.
Klicken Sie mit der rechten Maustaste auf ThisAddIn.cs bzw. ThisAddIn.vb, und klicken Sie dann auf Code anzeigen.
Fügen Sie der
ThisAddIn
-Klasse den folgenden Code hinzu.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
Drücken Sie F5, um das Projekt auszuführen.
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.
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.
Klicken Sie in der Gruppe Code auf Visual Basic.
Der Visual Basic-Editor wird geöffnet.
Doppelklicken Sie im Projektfenster auf DieseArbeitsmappe.
Die Codedatei für das
ThisWorkbook
-Objekt wird geöffnet.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
Drücken Sie F5.
Ü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.
Beenden Sie Excel.
Nächste Schritte
In den folgenden Themen erhalten Sie weitere Informationen zum Programmieren von VSTO-Add-Ins:
Verwenden Sie die
ThisAddIn
-Klasse zum Automatisieren der Hostanwendung und zum Durchführen anderer Aufgaben in VSTO-Add-In-Projekten. Weitere Informationen finden Sie unter Programm-VSTO-Add-Ins.Erstellen Sie einen benutzerdefinierten Aufgabenbereich in einem VSTO-Add-In. Weitere Informationen finden Sie unter Benutzerdefinierte Aufgabenbereiche und Vorgehensweise: Hinzufügen eines benutzerdefinierten Aufgabenbereichs zu einer Anwendung.
Passen Sie das Menüband in einem VSTO-Add-In an. Weitere Informationen finden Sie unter "Übersicht über das Menüband" und "Vorgehensweise: Erste Schritte beim Anpassen des Menübands".