Udostępnij za pośrednictwem


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

łącze do wideo 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

  1. 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.

  2. 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ć.

  3. 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.

  4. 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.

  5. 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.

  6. 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

  1. 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.

  2. 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ć.

  3. Dodaj element członkowski, który chcesz wystawiać public class w projekcie VBA i ogłosić nowego członka jako public.

  4. 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)> _
    
  5. 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
    
  6. Otwórz dokument (Word) lub projektant arkusza (dla programu Excel) w Visual Studio.

  7. 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.

  8. 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.

  9. 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#

Inne zasoby

Projektowanie i tworzenie rozwiązań Office

Łączenie VBA i dostosowywanie na poziomie dokumentu