Sdílet prostřednictvím


Návod: Volání kódu v doplňku na úrovni aplikace z jazyka VBA

Tento návod ukazuje, jak vystavit v doplněk na aplikační úrovni pro další řešení Microsoft Office, včetně Visual Basic pro Applications (VBA) a doplňky modelu COM objekt.

Platí pro: Informace v tomto tématu se vztahují na projekty na úrovni aplikace v Microsoft Office 2013 a Microsoft Office 2010. Další informace najdete v tématu Dostupné funkce podle aplikací systému Office a typů projektu.

Přestože tento návod používá konkrétně Excel, jsou použitelné pro libovolnou šablonu přidat do projektu Visual Studio poskytuje koncepty prokázat návodu.

Tento návod ilustruje následující úkoly:

  • Definování třídy, která může být vystavena jiné řešení Office.

  • Vystavení třídy pro jiné řešení Office.

  • Volání metody třídy z kódu jazyka VBA.

[!POZNÁMKA]

Na vašem počítači se můžou v následujících pokynech zobrazovat jiné názvy nebo umístění některých prvků uživatelského rozhraní Visual Studia. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

Požadavky

Chcete-li dokončit tento návod, potřebujete následující komponenty:

odkaz na video Video verzi tohoto tématu, viz Video postupy: volání kódu v úrovni aplikace doplněk z VBA.

Vytváření projektu doplněk

První krok je vytvořit projekt doplněk pro Excel.

Vytvoření nového projektu

Definování třídy, která může vystavit další řešení Office

Tento návod používá volání ImportData metoda třídy s názvem AddInUtilities v doplňku z kódu jazyka VBA.Tato metoda zapíše řetězec do buňky A1 v aktivním listu.

Vystavit AddInUtilities třída pro jiné řešení Office musíte provést třídy veřejných a viditelné COM.Musí také vystavit IDispatch rozhraní třídy.Kód v následující postup ukazuje jeden způsob, jak tyto požadavky splnit.Další informace naleznete v tématu Volání kódu v doplňcích na úrovni aplikace z jiných řešení pro systém Office.

Definujte třídu, která může vystavit na jiné řešení Office

  1. V nabídce Projekt klikněte na Přidat třídu.

  2. V Přidat novou položku dialogové okno pole, změňte název nové třídy pro AddInUtilitiesa na Přidat.

    AddInUtilities.cs nebo AddInUtilities.vb soubor se otevře v editoru kódu.

  3. Na začátek souboru přidejte následující příkazy.

    Imports System.Data
    Imports System.Runtime.InteropServices
    Imports Excel = Microsoft.Office.Interop.Excel
    
    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. Nahradit AddInUtilities třídy s následujícím kódem.

    <ComVisible(True)> _
    Public Interface IAddInUtilities
        Sub ImportData()
    End Interface
    
    <ComVisible(True)> _
    <ClassInterface(ClassInterfaceType.None)> _
    Public Class AddInUtilities
        Implements IAddInUtilities
    
        ' This method tries to write a string to cell A1 in the active worksheet. 
        Public Sub ImportData() Implements IAddInUtilities.ImportData
    
            Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet
    
            If activeWorksheet IsNot Nothing Then 
                Dim range1 As Excel.Range = activeWorksheet.Range("A1")
                range1.Value2 = "This is my data" 
            End If 
        End Sub 
    End Class
    
    [ComVisible(true)]
    public interface IAddInUtilities
    {
        void ImportData();
    }
    
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    public class AddInUtilities : IAddInUtilities
    {
        // This method tries to write a string to cell A1 in the active worksheet. 
        public void ImportData()
        {
            Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet;
    
            if (activeWorksheet != null)
            {
                Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing);
                range1.Value2 = "This is my data";
            }
        }
    }
    

    Tento kód vytvoří AddInUtilities třídy COM viditelné a přidá ImportData metodu třídy.Vystavit IDispatch rozhraní, AddInUtilities třída má také ClassInterfaceAttribute a implementuje rozhraní, které je viditelné COM.

Vystavení třídy pro jiné řešení Office

Vystavit AddInUtilities třídy jiné řešení Office, přepsat RequestComAddInAutomationService metoda ThisAddIn třídy.Ve vaší přepsané vrátit instance AddInUtilities třídy.

Vystavit třídy AddInUtilities pro další řešení Office

  1. V Průzkumníku, rozbalte Excel.

  2. Klepněte pravým tlačítkem ThisAddIn.cs nebo ThisAddIn.vba klepněte na tlačítko Zobrazení kódu.

  3. Přidejte následující kód do třídy ThisAddIn.

    Private utilities As AddInUtilities
    
    Protected Overrides Function RequestComAddInAutomationService() As Object 
        If utilities Is Nothing Then
            utilities = New AddInUtilities()
        End If 
        Return utilities
    End Function
    
    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. V nabídce Sestavení klikněte na příkaz Sestavit řešení.

    Ověřte, že řešení sestaví bez chyb.

Testování doplněk

Můžete volat do AddInUtilities třídy z několika různých typů řešení Office.V tomto návodu použijete kód VBA v sešitu aplikace Excel.Další informace o dalších typech řešení Office můžete použít, naleznete v Volání kódu v doplňcích na úrovni aplikace z jiných řešení pro systém Office.

Testování doplněk

  1. Stisknutím klávesy F5 spustit projektu.

  2. V aplikaci Excel uložte jako sešit aplikace Excel Macro-Enabled (*.xlsm) aktivního sešitu.Uložte na vhodné místo, například na plochu.

  3. Na pásu karet klepněte Developer kartu.

    [!POZNÁMKA]

    Pokud Developer kartě není viditelná, musíte nejprve zobrazit.Další informace naleznete v tématu Postupy: Zobrazení karty Vývojář na pásu karet.

  4. V kód skupinu, klepněte na jazyka Visual Basic.

    Otevře se Editor jazyka Visual Basic.

  5. V projektu okno, poklepejte na ThisWorkbook.

    Soubor kódu ThisWorkbook otevře objekt.

  6. Přidejte následující kód VBA soubor kódu.Tento kód nejprve získá COMAddIn objekt, který představuje ExcelImportData doplňku.Pak použije kód Object vlastnost COMAddIn objekt volání ImportData metoda.

    Sub CallVSTOMethod()
        Dim addIn As COMAddIn
        Dim automationObject As Object
        Set addIn = Application.COMAddIns("ExcelImportData")
        Set automationObject = addIn.Object
        automationObject.ImportData
    End Sub
    
  7. Stisknutím klávesy F5.

  8. Ověřte, zda nový Importována Data list do sešitu.Ověřte také, že buňka A1 obsahuje řetězec je moje data.

  9. Ukončete aplikaci Excel.

Další kroky

Další informace o programování doplňky z těchto témat:

Viz také

Úkoly

Postupy: Vytváření projektů pro systém Office v prostředí Visual Studio

Koncepty

Volání kódu v doplňcích na úrovni aplikace z jiných řešení pro systém Office

Architektura doplňků na úrovni aplikace

Přizpůsobení funkcí uživatelského rozhraní pomocí rozšiřujících rozhraní

Další zdroje

Programování doplňků na úrovni aplikace

Vývoj řešení pro systém Office