Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office
Aggiornamento: novembre 2007
Si applica a |
---|
Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati. Tipo di progetto
Versione Microsoft Office
Per ulteriori informazioni, vedere la classe Funzionalità disponibili in base ai tipi di progetto e applicazione. |
È possibile esporre un oggetto del componente aggiuntivo ad altre soluzioni Microsoft Office. Ciò è utile se il componente aggiuntivo fornisce un servizio che si desidera possa essere utilizzato da altre soluzioni Office. Se ad esempio si dispone di un componente aggiuntivo per Microsoft Office Excel che effettua i calcoli dei dati finanziari di un servizio Web, le altre soluzioni Office possono effettuare tali calcoli eseguendo la chiamata nel componente aggiuntivo per Excel in fase di esecuzione.
Visual Studio Tools per Office fornisce inoltre una funzionalità simile per le personalizzazioni a livello di documento. Se si sta sviluppando una personalizzazione per Microsoft Office System 2007, è possibile chiamare il codice della personalizzazione dal codice VBA del documento. Per ulteriori informazioni, vedere Chiamata di codice nelle personalizzazioni a livello di documento da VBA.
Soluzioni Office in grado di chiamare il codice di un componente aggiuntivo
È possibile esporre un oggetto di un componente aggiuntivo ai tipi seguenti di soluzioni Office:
Altri componenti aggiuntivi Visual Studio Tools per Office.
Personalizzazioni a livello di documento caricate nello stesso processo dell'applicazione del componente aggiuntivo.
Componenti aggiuntivi COM, ovvero componenti aggiuntivi che implementano direttamente l'interfaccia IDTExtensibility2.
Codice Visual Basic, Applications Edition (VBA) di un documento caricato nello stesso processo dell'applicazione del componente aggiuntivo.
Esposizione di oggetti ad altre soluzioni Office
Per esporre un oggetto ad altri componenti aggiuntivi, eseguire l'override del metodo RequestComAddInAutomationService della classe ThisAddIn. Restituire l'oggetto da esporre alle altre soluzioni Office.
Quando il componente aggiuntivo viene caricato, il runtime Visual Studio Tools per Office chiama il metodo RequestComAddInAutomationService. Il runtime assegna l'oggetto restituito alla proprietà Object di un oggetto COMAddIn che rappresenta il componente aggiuntivo. L'oggetto COMAddIn è disponibile per le altre soluzioni Office.
Requisiti dell'oggetto restituito
L'implementazione di RequestComAddInAutomationService deve restituire un'istanza di una classe che soddisfa i seguenti requisiti:
La classe deve essere pubblica e l'attributo ComVisibleAttribute della classe deve essere impostato su true.
La classe deve esporre l'interfaccia IDispatch. A tale scopo, sono disponibili due modi di procedere:
La classe può implementare un'interfaccia i cui attributi ComVisibleAttribute e InterfaceTypeAttribute siano impostati rispettivamente su true e su InterfaceIsIDispatch o InterfaceIsDual.
Oppure
L'attributo ClassInterfaceAttribute della classe può essere impostato su AutoDual o AutoDispatch.
Se l'oggetto restituito non soddisfa tali requisiti, il runtime Visual Studio Tools per Office genererà un'eccezione InvalidCastException dopo avere chiamato l'implementazione.
Per un esempio di una classe che soddisfa questi requisiti, vedere Procedura dettagliata: chiamata di codice in un componente aggiuntivo a livello di applicazione da VBA.
Esempio
Nell'esempio di codice riportato di seguito viene illustrato come eseguire l'override dell'oggetto RequestComAddInAutomationService. Nell'esempio si presuppone che sia stata definita una classe denominata AddInUtilities da esporre alle altre soluzioni Office e che la classe AddInUtilities soddisfi i requisiti specificati in precedenza. Per visualizzare il codice nel contesto di una procedura dettagliata di maggiore portata, vedere Procedura dettagliata: chiamata di codice in un componente aggiuntivo a livello di applicazione da 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;
}
Accesso agli oggetti da altre soluzioni Office
Attenersi alla procedura seguente nel codice di una soluzione Office diversa, non nel componente aggiuntivo esposto:
Ottenere l'oggetto COMAddIn che rappresenta il componente aggiuntivo esposto. È possibile accedere a tutti i componenti aggiuntivi disponibili utilizzando la proprietà COMAddIns della classe Application.
Accedere alla proprietà Object dell'oggetto COMAddIn passato.
Nell'esempio di codice seguente viene illustrato come utilizzare VBA per chiamare un metodo in un componente aggiuntivo. Questa macro VBA chiama un metodo denominato ImportData definito in un componente aggiuntivo denominato ExcelImportData. Per visualizzare il codice nel contesto di una procedura dettagliata di maggiore portata, vedere Procedura dettagliata: chiamata di codice in un componente aggiuntivo a livello di applicazione da VBA.
Sub CallVSTOMethod()
Dim addIn As COMAddIn
Dim automationbject As Object
Set addIn = Application.COMAddIns("ExcelImportData")
Set automationObject = addIn.Object
automationObject.ImportData
End Sub
Vedere anche
Attività
Procedura: creare progetti Visual Studio Tools per Office
Concetti
Programmazione di componenti aggiuntivi a livello di applicazione
Elementi host di componenti aggiuntivi
Architettura dei componenti aggiuntivi a livello di applicazione