Aufrufen von Code in Add-Ins auf Anwendungsebene von anderen Office-Projektmappen
Aktualisiert: November 2007
Betrifft |
---|
Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office. Projekttyp
Microsoft Office-Version
Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
Sie können ein Objekt im Add-In für andere Microsoft Office-Projektmappen verfügbar machen. Dies ist nützlich, wenn das Add-In einen Dienst bietet, den auch andere Office-Projektmappen nutzen sollen. Wenn Sie beispielsweise ein Add-In für Microsoft Office Excel haben, das Berechnungen für Finanzdaten von einem Webdienst durchführt, können andere Office-Projektmappen diese Berechnungen durchführen, indem sie das Excel-Add-In zur Laufzeit aufrufen.
Visual Studio Tools for Office stellt auch ein ähnliches Feature für die Anpassungen auf Dokumentebene bereit. Wenn Sie eine Anpassung für 2007 Microsoft Office System entwickeln, können Sie in der Anpassung Code aus dem VBA-Code im Dokument abrufen. Weitere Informationen finden Sie unter Aufrufen von Code in Anpassungen auf Dokumentebene von VBA.
Office-Projektmappen, die Code in einem Add-In aufrufen können
Sie können ein Objekt in einem Add-In für die folgenden Typen von Office-Projektmappen verfügbar machen:
Andere Visual Studio Tools for Office-Add-Ins.
Anpassungen auf Dokumentebene, die in den gleichen Anwendungsprozess wie das Add-In geladen werden.
COM-Add-Ins (d. h. Add-Ins, die die IDTExtensibility2-Schnittstelle direkt implementieren).
VBA (Visual Basic for Applications)-Code in einem Dokument, das in den gleichen Anwendungsprozess wie das Add-In geladen wird.
Verfügbarmachen von Objekten für andere Office-Projektmappen
Um ein Objekt für andere Add-Ins verfügbar zu machen, überschreiben Sie die RequestComAddInAutomationService-Methode in der ThisAddIn-Klasse. Geben Sie das Objekt zurück, das Sie für andere Office-Projektmappen verfügbar machen möchten.
Wenn das Add-In geladen wird, ruft die Visual Studio Tools for Office-Laufzeit die RequestComAddInAutomationService-Methode auf. Die Laufzeit weist das zurückgegebene Objekt der Object-Eigenschaft eines COMAddIn-Objekts zu, das das Add-In darstellt. Dieses COMAddIn-Objekt steht anderen Office-Projektmappen zur Verfügung.
Anforderungen des zurückgegebenen Objekts
Die Implementierung von RequestComAddInAutomationService muss eine Instanz einer Klasse zurückgeben, die folgende Anforderungen erfüllt:
Die Klasse muss öffentlich sein, und ihr ComVisibleAttribute-Attribut muss auf true festgelegt sein.
Die Klasse muss die IDispatch-Schnittstelle verfügbar machen. Dies kann auf zwei Wegen erfolgen:
Die Klasse kann eine Schnittstelle implementieren, deren ComVisibleAttribute auf true und deren InterfaceTypeAttribute auf InterfaceIsIDispatch oder InterfaceIsDual festgelegt ist.
- oder -
Das ClassInterfaceAttribute der Klasse kann auf AutoDual oder AutoDispatch festgelegt sein.
Wenn das zurückgegebene Objekt diese Anforderungen nicht erfüllt, löst die Visual Studio Tools for Office-Laufzeit eine InvalidCastException aus, nachdem die Implementierung aufgerufen wurde.
Ein Beispiel für eine Klasse, die diese Anforderungen erfüllt, finden Sie unter Exemplarische Vorgehensweise: Aufrufen von Code in einem Add-In auf Anwendungsebene von VBA.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie RequestComAddInAutomationService überschrieben wird. In diesem Beispiel wird davon ausgegangen, dass Sie eine Klasse namens AddInUtilities definiert haben, die Sie für andere Office-Projektmappen verfügbar machen möchten, und dass die AddInUtilities-Klasse den oben angegebenen Anforderungen entspricht. Eine Darstellung dieses Codes im Kontext einer größeren exemplarischen Vorgehensweise finden Sie unter Exemplarische Vorgehensweise: Aufrufen von Code in einem Add-In auf Anwendungsebene von VBA.
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;
}
Zugreifen auf Objekte von anderen Office-Projektmappen
Führen Sie im Code für eine andere Office-Projektmappe (nicht das verfügbar gemachte Add-In) die folgenden Schritte aus:
Rufen Sie das COMAddIn-Objekt ab, das das verfügbar gemachte Add-In darstellt. Sie können mithilfe der COMAddIns-Eigenschaft der Application-Klasse auf alle verfügbaren Add-Ins zugreifen.
Greifen Sie auf die Object-Eigenschaft des COMAddIn-Objekts zu.
Im folgenden Codebeispiel wird veranschaulicht, wie eine Methode mit VBA in einem Add-In aufgerufen wird. Dieses VBA-Makro ruft eine Methode namens ImportData auf, die in einem Add-In namens ExcelImportData definiert ist. Eine Darstellung dieses Codes im Kontext einer größeren exemplarischen Vorgehensweise finden Sie unter Exemplarische Vorgehensweise: Aufrufen von Code in einem Add-In auf Anwendungsebene von VBA.
Sub CallVSTOMethod()
Dim addIn As COMAddIn
Dim automationbject As Object
Set addIn = Application.COMAddIns("ExcelImportData")
Set automationObject = addIn.Object
automationObject.ImportData
End Sub
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Aufrufen von Code in einem Add-In auf Anwendungsebene von VBA
Gewusst wie: Erstellen von Visual Studio Tools for Office-Projekte
Konzepte
Programmieren von Add-Ins auf Anwendungsebene
Entwickeln von Office-Projektmappen
Anpassen von Features der Benutzeroberfläche mithilfe von Erweiterungsschnittstellen