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 2013 und Microsoft Office 2010. 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
Hinweis |
---|
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 2012, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.110\).md).
- Excel 2013 oder Excel 2010.
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 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
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 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;
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
Erweitern Sie im Projektmappen-Explorer die Option Excel.
Klicken Sie mit der rechten Maustaste auf ThisAddIn.cs oder ThisAddIn.vb, und klicken Sie dann auf Code anzeigen.
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; }
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
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 Gewusst wie: Anzeigen der Registerkarte "Entwickler" auf der Multifunktionsleiste.
Klicken Sie in der Gruppe Code auf Visual Basic.
Der Visual Basic-Editor wird geöffnet.
Doppelklicken Sie im Fenster Projekt auf ThisWorkbook.
Die Codedatei für das ThisWorkbook-Objekt wird geöffnet.
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
Drücken Sie F5.
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.
Beenden Sie Excel.
Nächste Schritte
Mehr über die Programmierung von Add-Ins erfahren Sie in den folgenden Themen:
Verwenden der ThisAddIn-Klasse, um die Hostanwendung zu automatisieren und andere Aufgaben in Add-In-Projekten auszuführen.Weitere Informationen finden Sie unter Programmieren von Add-Ins auf Anwendungsebene.
Erstellen Sie in einem Add-In einen benutzerdefinierten Aufgabenbereich.Weitere Informationen finden Sie unter Benutzerdefinierte Aufgabenbereiche und Gewusst wie: Hinzufügen eines benutzerdefinierten Aufgabenbereichs zu einer Anwendung.
Passen Sie das Menüband in einem Add-In an.Weitere Informationen finden Sie unter Übersicht über die Multifunktionsleiste und Gewusst wie: Erste Schritte beim Anpassen der Multifunktionsleiste.
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
Anpassen von Features der Benutzeroberfläche mithilfe von Erweiterungsschnittstellen