Jak: narazić kodu VBA w Visual C# projektu
Jeśli chcesz, aby dwa typy kodu do interakcji z innymi, może narazić kodu Visual C# projektu w języku Visual Basic dla kodu Applications (VBA).
Proces Visual C# różni się od procesu języka Visual Basic.Aby uzyskać więcej informacji, zobacz Jak: narazić kodu VBA w projekcie programu Visual Basic.
Dotyczy: Informacje przedstawione w tym temacie dotyczą projektów na poziomie dokumentu dla następujących aplikacji: Excel 2013 i Excel 2010; Word 2013 i Word 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacji pakietu Office i typ projektu.
Wystawiając kod projektu programu Visual C#
Aby włączyć kod języka VBA w celu wywołania kodu w projekcie programu Visual C#, zmodyfikować kod, tak aby była widoczna dla modelu COM, a następnie ustaw ReferenceAssemblyFromVbaProject właściwość, aby True w projektancie.
Instruktaż, który pokazuje, jak wywołać metodę w projekcie programu Visual C# z języka VBA, zobacz Instruktaż: Wywołanie kodu z języka VBA w Visual C# projektu.
Aby odsłonić kod w projekcie programu Visual C# (VBA)
Otwórz lub Utwórz projekt poziomie dokumentu, który opiera się na dokument programu Word, skoroszyt programu Excel lub szablon programu Excel, który obsługuje makra i już zawiera kod języka VBA.
Aby uzyskać więcej informacji na temat formatów plików dokumentów, które obsługuje makr, zobacz Łączenie VBA i dostosowania na poziomie dokumentu.
[!UWAGA]
Nie można użyć tej funkcji w projekty szablonów programu Word.
Upewnij się, że kod VBA w dokumencie może być uruchamiane bez monitowania użytkownika o włączenie makr.Kod VBA, dodając lokalizację programu Office project do listy Zaufane lokalizacje w ustawienia Centrum zaufania dla programu Word lub Excel można zaufać.
Dodaj element członkowski, który chcesz wystawiać public class w projekcie VBA i ogłosić nowego członka jako public.
Zastosuj następujące ComVisibleAttribute i ClassInterfaceAttribute atrybuty do klasy, który wystawiając VBA.Te atrybuty uwidocznić klasy COM, ale bez generowania interfejsu klasy.
[System.Runtime.InteropServices.ComVisible(true)] [System.Runtime.InteropServices.ClassInterface( System.Runtime.InteropServices.ClassInterfaceType.None)]
Zastąpić GetAutomationObject metody klasy elementu hosta w projekcie, aby przywrócić wystąpienie klasy, który naraża VBA:
Jeśli wyświetlasz klasy elementu host (VBA), należy zastąpić GetAutomationObject metodę, która należy do tej klasy zwraca bieżące wystąpienie klasy.
protected override object GetAutomationObject() { return this; }
Jeśli wyświetlasz klasy, która nie jest elementem host (VBA), należy zastąpić GetAutomationObject metoda dowolnego hosta pozycja w projekcie i zwraca instancję klasy zapasu — do hosta.Na przykład, następujący kod zakłada, że naraża klasę o nazwie DocumentUtilities (VBA).
protected override object GetAutomationObject() { return new DocumentUtilities(); }
Aby uzyskać więcej informacji na temat elementów hosta, zobacz Elementy hosta i Omówienie kontroli hosta.
Dodatek interfejs z klasy, który wystawiając VBA.W Dodatek interfejs okno dialogowe Wybierz publiczne elementy członkowskie, które mają zostać uwzględnione w deklaracji interfejsu.Aby uzyskać więcej informacji, zobacz Wyodrębnij interfejsu przeróbek (C#).
Dodaj public słowo kluczowe, aby deklaracja interfejsu.
Uwidacznianie interfejsu COM poprzez dodanie następującego ComVisibleAttribute atrybut do interfejsu.
[System.Runtime.InteropServices.ComVisible(true)]
Otworzyć dokument (Word) lub w arkuszu (Excel), Projektant w Visual Studio.
W Właściwości okno, wybierz ReferenceAssemblyFromVbaProject właściwość i zmień wartość na True.
[!UWAGA]
Jeśli skoroszyt lub dokument nie zawiera kodu języka VBA lub jeśli kod VBA w dokumencie nie jest zaufany do uruchomienia, zostanie wyświetlony komunikat o błędzie podczas ustawiania ReferenceAssemblyFromVbaProject właściwość, aby True.Wynika to z programu Visual Studio nie można zmodyfikować projekt VBA w dokumencie w tej sytuacji.
Kliknij przycisk OK w wiadomości, która jest wyświetlana.Ten komunikat przypomina, że jeśli dodasz VBA kod do skoroszytu lub dokumentu podczas pracy w projekcie od Visual Studio, kod VBA utracisz przy następnym Skompiluj projekt.Wynika to z dokumentu w kompilacji są wyprowadzane folder jest zastępowane przy każdym Skompiluj projekt.
W tym momencie Visual Studio konfiguruje projekt tak, aby zadzwonić do zespołu projektu VBA.Visual Studio dodaje również metodę o nazwie GetManagedClass do projektu VBA.Tę metodę można wywołać z dowolnego miejsca w projekcie VBA, aby dostęp do tej klasy, które narażone na VBA.
Skompiluj projekt.
Zobacz też
Zadania
Jak: tworzenie projektów pakietu Office w programie Visual Studio
Instruktaż: Wywołanie kodu z języka VBA w Visual C# projektu
Jak: narazić kodu VBA w projekcie programu Visual Basic