Jak: vystavit kódu jazyka VBA Visual C# projektu
Kód jazyka Visual C# projektu jazyka Visual Basic pro Applications (VBA), kód může vystavit Pokud má dva typy kódu vzájemně spolupracovat.
Se liší od procesu Visual Basic proces Visual C#.Další informace naleznete v tématu Jak: vystavit kód VBA v projektu aplikace Visual Basic.
Platí pro: Informace v tomto tématu se vztahují na projekty na úrovni dokumentu v následujících aplikacích: Excel 2013 a Excel 2010, Word 2013 a Word 2010. Další informace naleznete v tématu Funkce aplikace Office a typ projektu.
Vystavení kódu v aplikaci Visual C# projektu
Pokud chcete povolit volání kódu v projektu Visual C# kódu VBA, změnit kód tak, aby byl viditelný COM a poté nastavte ReferenceAssemblyFromVbaProject vlastnost True v návrháři.
Návod, který ukazuje, jak volat metoda z VBA v projektu Visual C#, viz Názorný postup: Volání kódu z jazyka VBA v aplikaci Visual C# projektu.
Vystavit kód v jazyce Visual C# projektu VBA
Otevřete nebo vytvořte dokument úroveň projektu, založené na dokument aplikace Word, sešit aplikace Excel nebo šablonu aplikace Excel makra, která podporuje, který již obsahuje kód jazyka VBA.
Další informace o formátech souborů dokumentů, které podporují maker naleznete v Diakritické znaménko VBA a úpravy na úrovni dokumentu.
[!POZNÁMKA]
Tuto funkci nelze použít v aplikaci Word šablony projektů.
Zajistěte, že kód VBA v dokumentu je povoleno spustit bez zobrazení výzvy k povolení maker.Kód VBA spustit přidáním umístění Office project do seznamu důvěryhodných umístění v Centru nastavení aplikace Word nebo Excel můžete důvěřovat.
Přidat člena, který chcete zpřístupnit veřejné třídy v projektu VBA a deklarovat jako nový člen public.
Použijte následující ComVisibleAttribute a ClassInterfaceAttribute atributy třídy, které jsou vystaveny na VBA.Tyto atributy zviditelnit třídy COM, ale bez generování rozhraní třídy.
[System.Runtime.InteropServices.ComVisible(true)] [System.Runtime.InteropServices.ClassInterface( System.Runtime.InteropServices.ClassInterfaceType.None)]
Přepsat GetAutomationObject třídy položku hostitele v projektu VBA vrátit instance třídy, které jsou vystaveny:
Pokud jsou vystaveny třída položku hostitele VBA, přepsat GetAutomationObject metoda, která patří do této třídy a vrátit aktuální instanci třídy.
protected override object GetAutomationObject() { return this; }
Pokud jsou vystaveny třídu, která není hostitele položka kódu VBA, přepsat GetAutomationObject metodu libovolného hostitele položka v projektu a vrátí instanci třídy položky bez hostitele.Například následující kód předpokládá, že jsou vystaveny třídu s názvem DocumentUtilities na VBA.
protected override object GetAutomationObject() { return new DocumentUtilities(); }
Další informace o položkách hostitele naleznete v Přehled ovládací prvky hostitel a Host položky.
Extrahujte rozhraní z třídy, které jsou vystaveny na VBA.V Extrahovat rozhraní dialogovém okně vyberte veřejné členy, které chcete zahrnout do deklarace rozhraní.Další informace naleznete v tématu Extrahovat rozhraní optimalizace struktury programu (C#).
Přidat public klíčové deklarace rozhraní.
Zviditelnit rozhraní COM přidáním následujícího ComVisibleAttribute atributu rozhraní.
[System.Runtime.InteropServices.ComVisible(true)]
Otevřít dokument (Word) nebo listu (pro Excel) v Návrháři v Visual Studio.
V Vlastnosti vyberte ReferenceAssemblyFromVbaProject vlastnost a změňte hodnotu na True.
[!POZNÁMKA]
Pokud sešit nebo dokument neobsahuje žádný kód jazyka VBA nebo pokud není důvěryhodné pro spuštění kódu VBA dokumentu, zobrazí se chybová zpráva při nastavení ReferenceAssemblyFromVbaProject vlastnost True.Důvodem je Visual Studio nelze změnit projekt VBA v dokumentu v této situaci.
Klepněte na OK v zobrazené zprávě.Tato zpráva upozorňuje, že pokud přidáte VBA kód sešitu nebo dokumentu při spuštění projektu z Visual Studio, kód VBA budou ztraceny při příštím sestavení projektu.Důvodem je výstupní dokument v sestavení složky je přepsán pokaždé, když sestavíte projekt.
V tomto okamžiku nastaví Visual Studio projekt tak, aby projekt VBA mohou volat do sestavení.Visual Studio přidá metodu s názvem GetManagedClass projektu VBA.Tuto metodu lze volat odkudkoli v projektu VBA přístup třídy, která je vystavena VBA.
Projekt sestavte.
Viz také
Úkoly
Jak: vytvoření Office projekty v aplikaci Visual Studio
Názorný postup: Volání kódu z jazyka VBA v aplikaci Visual C# projektu
Jak: vystavit kód VBA v projektu aplikace Visual Basic