Porady: udostępnianie kodu z VBA w projektach Visual Basic
Można udostępnić kod w Visual Basic projektu do języka Visual Basic dla kodu Applications (VBA), jeśli chcesz, aby dwa typy kodu do interakcji z innymi.
Zastosowanie: Informacje przedstawione w tym temacie mają zastosowanie do 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 aplikacjach pakietu Office i typ projektu.
Proces programu Visual Basic różni się od procesu Visual C#.Aby uzyskać więcej informacji, zobacz Porady: udostępnianie kodu z VBA w projektach Visual C#.
Jest inna dla kodu w klasie elementu hosta niż dla kodu w innych klas:
Wystawiając kod w klasie elementu hosta
Wystawiając kod, który nie jest w klasie elementu hosta
Aby wyświetlić pokrewne wideo demonstracyjne, zobacz jak zrobić I: wywołać VSTO kodu VBA?.
Wystawiając kod w klasie elementu hosta
Aby włączyć kod VBA do wywołania kodu języka Visual Basic w klasie elementu hosta, należy ustawić EnableVbaCallers właściwość elementu hosta do True.
Instruktaż, który pokazuje, jak wystawiać metoda klasy hosta, towaru, a następnie wywołać ją z języka VBA, zobacz Wskazówki: wywoływanie kodu z VBA w projektach Visual Basic.Aby uzyskać więcej informacji na temat elementów hosta, zobacz Przegląd obiektów hosta i formantów hosta.
Aby odsłonić kod w elemencie hosta VBA
Otwórz lub Utwórz dokument poziom Visual Basic projekt, 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 dostosowywanie 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ć.
Dodawanie właściwości, metody lub zdarzenia, które chcesz wystawiać VBA do jednego hosta element klasy do projektu i ogłosić nowego członka jako Public.Nazwa klasy zależy od aplikacji:
Słowem projektu, klasa pozycji host nosi nazwę ThisDocument domyślnie.
W projekcie programu Excel, są o nazwie hosta element klasy ThisWorkbook, Sheet1, Sheet2, i Sheet3 domyślnie.
Zestaw EnableVbaCallers właściwość elementu hosta do True.Ta właściwość jest dostępna w Właściwości okna, gdy jest otwarty w Projektancie element hosta.
Po ustawieniu tej właściwości, Visual Studio automatycznie ustawia ReferenceAssemblyFromVbaProject właściwość, aby True.
[!UWAGA]
Jeśli skoroszyt lub dokument nie zawiera kod VBA, lub jeśli kod VBA w dokumencie nie jest zaufany do uruchomienia, zostanie wyświetlony komunikat o błędzie podczas ustawiania EnableVbaCallers 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.Tej wiadomości przypomina, że jeśli dodasz kod VBA do skoroszytu lub dokumentu, podczas gdy są uruchomione projektu z Visual Studio, kod VBA zostaną utracone podczas następnego Skompiluj projekt.Wynika to z dokumentu w folderze wyjściowym kompilacji jest zastępowany za każdym razem, gdy Skompiluj projekt.
W tym momencie Visual Studio konfiguruje projekt tak, aby zadzwonić do zespołu projektu VBA.Visual Studio dodaje również właściwość o nazwie CallVSTOAssembly do ThisDocument, ThisWorkbook, Sheet1, Sheet2, lub Sheet3 moduł w projekcie VBA.Ta właściwość umożliwia dostęp do publicznych członków klasy, która jest narażony na VBA.
Skompiluj projekt.
Wystawiając kod, który nie jest w klasie elementu hosta
Aby włączyć kod VBA do wywołania kodu języka Visual Basic, który nie jest w klasie elementu hosta, należy zmodyfikować kod tak, aby była widoczna dla języka VBA.
Aby odsłonić kod, który nie jest w hoście klasy elementu VBA
Otwórz lub Utwórz dokument poziom Visual Basic projekt, 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 dostosowywanie 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 ComClassAttribute atrybuty do klasy, który wystawiając VBA.Te atrybuty uwidocznienie klasy dla języka VBA.
<Microsoft.VisualBasic.ComClass()> _ <System.Runtime.InteropServices.ComVisibleAttribute(True)> _
Zastąpić GetAutomationObject metody klasy elementu hosta w projekcie, aby przywrócić wystąpienie klasy, który naraża VBA.W poniższym przykładzie kodu zakłada naraża klasę o nazwie DocumentUtilities (VBA).
Protected Overrides Function GetAutomationObject() As Object Return New DocumentUtilities() End Function
Otwórz dokument (Word) lub projektant arkusza (dla programu Excel) 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 kod 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.Tej wiadomości przypomina, że jeśli dodasz kod VBA do skoroszytu lub dokumentu, podczas gdy są uruchomione projektu z Visual Studio, kod VBA zostaną utracone podczas następnego Skompiluj projekt.Wynika to z dokumentu w folderze wyjściowym kompilacji jest zastępowany za każdym razem, gdy 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
Porady: tworzenie projektów Office w Visual Studio
Wskazówki: wywoływanie kodu z VBA w projektach Visual Basic
Porady: udostępnianie kodu z VBA w projektach Visual C#