Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här genomgången visar hur du exponerar ett objekt i ett VSTO-tillägg till andra Microsoft Office-lösningar, inklusive Visual Basic for Applications (VBA) och COM VSTO-tillägg.
Gäller för: Informationen i det här avsnittet gäller för VSTO-tilläggsprojekt. Mer information finns i Funktioner som är tillgängliga efter Office-program och projekttyp.
Även om den här genomgången använder Excel specifikt gäller de begrepp som visas i genomgången för alla VSTO-tilläggsprojektmallar som tillhandahålls av Visual Studio.
I den här genomgången tas följande aktiviteter upp:
Definiera en klass som kan exponeras för andra Office-lösningar.
Exponera klassen för andra Office-lösningar.
Anropa en metod för klassen från VBA-kod.
Anmärkning
Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassa IDE.
Förutsättningar
Du behöver följande komponenter för att slutföra den här genomgången:
En utgåva av Visual Studio som innehåller Utvecklarverktyg för Microsoft Office. Mer information finns i Konfigurera en dator för att utveckla Office-lösningar.
Microsoft Excel
Skapa VSTO-tilläggsprojektet
Det första steget är att skapa ett VSTO-tilläggsprojekt för Excel.
Skapa ett nytt projekt
Skapa ett Excel VSTO-tilläggsprojekt med namnet ExcelImportData med hjälp av Excel VSTO-tilläggsprojektmallen. Mer information finns i Så här skapar du Office-projekt i Visual Studio.
Visual Studio öppnar kodfilen ThisAddIn.cs eller ThisAddIn.vb och lägger till ExcelImportData-projektet i Solution Explorer.
Definiera en klass som du kan exponera för andra Office-lösningar
Syftet med den här genomgången är att anropa ImportData-metoden i en klass med namnet AddInUtilities i ditt VSTO-tillägg från VBA-kod. Den här metoden skriver en sträng i cell A1 i det aktiva kalkylbladet.
Om du vill exponera AddInUtilities klassen för andra Office-lösningar måste du göra klassen offentlig och synlig för COM. Du måste också exponera IDispatch-gränssnittet i klassen. Koden i följande procedur visar ett sätt att uppfylla dessa krav. För mer information, se Anrop av kod i VSTO-tillägg från andra Office-lösningar.
Definiera en klass som du kan exponera för andra Office-lösningar
Klicka på Lägg till klass på Projekt-menyn.
I dialogrutan Lägg till nytt objekt ändrar du namnet på den nya klassen till AddInUtilities och klickar på Lägg till.
Filen AddInUtilities.cs eller AddInUtilities.vb öppnas i kodredigeraren.
Lägg till följande direktiv överst i filen.
AddInUtilitiesErsätt klassen med följande kod.[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"; } } }Den här koden gör
AddInUtilitiesklassen synlig för COM och lägger tillImportDatametoden i klassen. För att exponera IDispatch-gränssnittetAddInUtilitieshar ClassInterfaceAttribute klassen även attributet och implementerar ett gränssnitt som är synligt för COM.
Exponera klassen för andra Office-lösningar
Om du vill exponera AddInUtilities klassen för andra Office-lösningar åsidosätter du RequestComAddInAutomationService metoden i ThisAddIn klassen. I din åsidosättning returnerar du en instans av AddInUtilities-klassen.
Så här exponerar du klassen AddInUtilities för andra Office-lösningar
Expandera Excel i Solution Explorer.
Högerklicka på ThisAddIn.cs eller ThisAddIn.vb och klicka sedan på Visa kod.
Lägg till följande kod i
ThisAddInklassen.På menyn Skapa klickar du på Skapa lösning.
Kontrollera att lösningen skapas utan fel.
Testa VSTO-tillägget
Du kan anropa klassen AddInUtilities från flera olika typer av Office-lösningar. I den här genomgången använder du VBA-kod i en Excel-arbetsbok. För mer information om andra typer av Office-lösningar som du också kan använda, se Anropa kod i VSTO-tillägg från andra Office-lösningar.
Testa ditt VSTO-tillägg
Tryck på F5 för att köra projektet.
Spara den aktiva arbetsboken i Excel som en Excel-Macro-Enabled-arbetsbok (*.xlsm). Spara den på en lämplig plats, till exempel skrivbordet.
Klicka på fliken Utvecklare i menyfliksområdet.
Anmärkning
Om fliken Utvecklare inte visas måste du först visa den. Mer information finns i Så här: Visa fliken Utvecklare i menyfliksområdet.
I gruppen Kod klickar du på Visual Basic.
Visual Basic-redigeraren öppnas.
Dubbelklicka på ThisWorkbook i projektfönstret.
Kodfilen för
ThisWorkbookobjektet öppnas.Lägg till följande VBA-kod i kodfilen. Den här koden hämtar först ett COMAddIn-objekt som representerar VSTO-tillägget ExcelImportData . Sedan använder koden egenskapen Object för COMAddIn-objektet för att anropa
ImportDatametoden.Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End SubTryck på F5.
Kontrollera att ett nytt importerat datablad har lagts till i arbetsboken. Kontrollera också att cell A1 innehåller strängen Detta är mina data.
Avsluta Excel.
Nästa steg
Du kan lära dig mer om att programmera VSTO-tillägg från följande ämnen:
ThisAddInAnvänd klassen för att automatisera värdprogrammet och utföra andra uppgifter i VSTO-tilläggsprojekt. Mer information finns i Program VSTO-tillägg.Skapa ett anpassat åtgärdsfönster i ett VSTO-tillägg. Mer information finns i Anpassade åtgärdsfönster och Så här lägger du till ett anpassat åtgärdsfönster i ett program.
Anpassa menyfliksområdet i ett VSTO-tillägg. Mer information finns i Översikt över menyfliksområdet och Så här: Kom igång med att anpassa menyfliksområdet.