Zveřejnění kódu pro jazyk VBA v projektu Visual C#
Kód v projektu Visual C# můžete zveřejnit pro jazyk Visual Basic for Application (VBA), pokud chcete, aby spolu dva typy kódu vzájemně spolupracovaly.
Proces Jazyka Visual C# se liší od procesu jazyka Visual Basic. Další informace naleznete v tématu Postupy: Zveřejnění kódu jazyka VBA v projektu jazyka Visual Basic.
Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu pro Excel a Word. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.
Zveřejnění kódu v projektu Visual C#
Chcete-li povolit kód jazyka VBA volat kód v projektu Visual C#, upravte kód tak, aby byl viditelný modelu COM, a potom nastavte ReferenceAssemblyFromVbaProject vlastnost True v návrháři.
Návod, který ukazuje, jak volat metodu v projektu Visual C# z jazyka VBA, najdete v tématu Návod: Volání kódu z jazyka VBA v projektu Visual C#.
Zveřejnění kódu v projektu Visual C# pro jazyk VBA
Otevřete nebo vytvořte projekt na úrovni dokumentu založený na wordovém dokumentu, excelovém sešitu nebo excelové šabloně, která podporuje makra a který už obsahuje kód jazyka VBA.
Další informace o formátech souborů dokumentů, které podporují makra, naleznete v tématu Kombinování přizpůsobení jazyka VBA a na úrovni dokumentu.
Poznámka:
Tuto funkci nelze použít v projektech šablon aplikace Word.
Ujistěte se, že kód jazyka VBA v dokumentu může běžet bez výzvy uživatele k povolení maker. Spuštění kódu jazyka VBA můžete důvěřovat přidáním umístění projektu Office do seznamu důvěryhodných umístění v nastavení Centra zabezpečení pro Word nebo Excel.
Přidejte člena, kterého chcete vystavit jazyku VBA veřejné třídě v projektu, a deklarujte nového člena jako veřejného.
U třídy, kterou vystavujete jazyku VBA, použijte následující ComVisibleAttribute atributy a ClassInterfaceAttribute atributy. Tyto atributy zviditelní třídu modelu COM, ale bez generování rozhraní třídy.
[System.Runtime.InteropServices.ComVisible(true)] [System.Runtime.InteropServices.ClassInterface( System.Runtime.InteropServices.ClassInterfaceType.None)]
Přepište metodu GetAutomationObject třídy položky hostitele v projektu tak, aby vrátila instanci třídy, kterou vystavujete jazyku VBA:
Pokud vystavujete třídu položky hostitele jazyka VBA, přepište GetAutomationObject metoda, která patří do této třídy, a vrátit aktuální instanci třídy.
protected override object GetAutomationObject() { return this; }
Pokud vystavujete třídu, která není hostitel položkou jazyka VBA, přepište GetAutomationObject metodu jakékoli položky hostitele v projektu a vrátit instanci třídy položky, která není hostitelem. Například následující kód předpokládá, že vystavujete třídu s názvem
DocumentUtilities
VBA.protected override object GetAutomationObject() { return new DocumentUtilities(); }
Další informace o položkách hostitele najdete v tématu Přehled položek hostitele a ovládacích prvků hostitele.
Extrahujte rozhraní z třídy, kterou vystavujete jazyku VBA. V dialogovém okně Extrahovat rozhraní vyberte veřejné členy, které chcete zahrnout do deklarace rozhraní. Další informace naleznete v tématu Extrakce refaktoringu rozhraní.
Přidejte veřejné klíčové slovo do deklarace rozhraní.
Zviditelní rozhraní modelu COM přidáním následujícího ComVisibleAttribute atributu do rozhraní.
[System.Runtime.InteropServices.ComVisible(true)]
Otevřete dokument (pro Word) nebo list (pro Excel) v návrháři v sadě Visual Studio.
V okně Vlastnosti vyberte Vlastnost ReferenceAssemblyFromVbaProject a změňte hodnotu na True.
Poznámka:
Pokud sešit nebo dokument ještě neobsahuje kód jazyka VBA nebo pokud kód jazyka VBA v dokumentu není důvěryhodný ke spuštění, zobrazí se chybová zpráva při nastavení ReferenceAssemblyFromVbaProject vlastnost True. Důvodem je to, že Visual Studio nemůže upravit projekt jazyka VBA v dokumentu v této situaci.
Ve zprávě, která se zobrazí, klikněte na tlačítko OK . Tato zpráva vám připomíná, že pokud při spuštění projektu ze sady Visual Studio přidáte kód jazyka VBA do sešitu nebo dokumentu, kód jazyka VBA se při příštím sestavení projektu ztratí. Důvodem je to, že dokument ve výstupní složce sestavení se přepíše při každém sestavení projektu.
V tomto okamžiku Visual Studio nakonfiguruje projekt tak, aby projekt VBA mohl volat do sestavení. Visual Studio také přidá metodu pojmenovanou
GetManagedClass
do projektu VBA. Tuto metodu můžete volat odkudkoli v projektu jazyka VBA, abyste získali přístup ke třídě, kterou jste zpřístupnili jazyku VBA.Sestavte projekt.