Sdílet prostřednictvím


Návod: Volání kódu v doplňku VSTO z jazyka VBA

Tento návod ukazuje, jak zveřejnit objekt v doplňku VSTO pro další systém Microsoft Office řešení, včetně doplňků jazyk Visual Basic for Application (VBA) a com VSTO.

Platí pro: Informace v tomto tématu platí pro projekty doplňků VSTO. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

I když tento názorný postup používá Excel konkrétně, koncepty, které názorný postup ukazuje, platí pro všechny šablony projektu doplňku VSTO poskytované sadou Visual Studio.

Tento návod znázorňuje následující úlohy:

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

  • Vystavení třídy jiným řešením Office

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

    Poznámka:

    Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace naleznete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).

Požadavky

K dokončení tohoto návodu budete potřebovat následující komponenty:

Vytvoření projektu doplňku VSTO

Prvním krokem je vytvoření projektu doplňku VSTO pro Excel.

Vytvoření nového projektu

  1. Pomocí šablony projektu doplňku Excel VSTO vytvořte doplněk Excel VSTO s názvem ExcelImportData. Další informace naleznete v tématu Postupy: Vytváření projektů Office v sadě Visual Studio.

    Visual Studio otevře soubor kódu ThisAddIn.cs nebo ThisAddIn.vb a přidá projekt ExcelImportData do Průzkumník řešení.

Definování třídy, kterou můžete zveřejnit pro jiná řešení Office

Účelem tohoto názorného postupu je volání metody ImportData třídy pojmenované AddInUtilities v doplňku VSTO z kódu VBA. Tato metoda zapíše řetězec do buňky A1 aktivního listu.

Pokud chcete třídu zveřejnit AddInUtilities pro jiná řešení Office, musíte nastavit třídu jako veřejnou a viditelnou pro com. Musíte také zveřejnit rozhraní IDispatch ve třídě. Kód v následujícím postupu ukazuje jeden ze způsobů, jak tyto požadavky splnit. Další informace najdete v tématu Volání kódu v doplňkech VSTO z jiných řešení pro systém Office.

Definování třídy, kterou můžete zveřejnit pro jiná řešení Office

  1. V nabídce Projekt klepněte na tlačítko Přidat třídu.

  2. V dialogovém okně Přidat novou položku změňte název nové třídy na AddInUtilities a klepněte na tlačítko Přidat.

    Soubor AddInUtilities.cs nebo AddInUtilities.vb se otevře v Editoru kódu.

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

    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. AddInUtilities Nahraďte třídu následujícím kódem.

    [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 zviditelní AddInUtilities třídu modelu COM a přidá metodu ImportData do třídy. Aby bylo možné zveřejnit rozhraní IDispatch , AddInUtilities třída má ClassInterfaceAttribute také atribut a implementuje rozhraní, které je viditelné modelu COM.

Zveřejnění třídy pro jiná řešení Office

Pokud chcete třídu zveřejnit AddInUtilities pro jiná řešení Office, přepište RequestComAddInAutomationService metodu ThisAddIn ve třídě. V přepsání vraťte instanci AddInUtilities třídy.

Zveřejnění třídy AddInUtilities pro jiná řešení pro systém Office

  1. V Průzkumník řešení rozbalte Excel.

  2. Klepněte pravým tlačítkem myši ThisAddIn.cs nebo ThisAddIn.vb a klepněte na tlačítko Zobrazit kód.

  3. Do třídy ThisAddIn přidejte následující kód.

    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. V nabídce Sestavení klikněte na Sestavit řešení.

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

Otestování doplňku VSTO

Do třídy můžete zavolat AddInUtilities z několika různých typů řešení Office. V tomto názorném postupu použijete kód jazyka VBA v excelovém sešitu. Další informace o dalších typech řešení Office, která můžete použít, najdete v tématu Volání kódu v doplňkech VSTO z jiných řešení Office.

Testování doplňku VSTO

  1. Stisknutím klávesy F5 spusťte projekt.

  2. V Excelu uložte aktivní sešit jako excelový sešit s podporou maker (*.xlsm). Uložte ho do vhodného umístění, například na ploše.

  3. Na pásu karet klikněte na kartu Vývojář .

    Poznámka:

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

  4. Ve skupině Code klikněte na Visual Basic.

    Otevře se Visual Basic Editor.

  5. V okně Projekt poklikejte na ThisWorkbook.

    Otevře se soubor kódu objektu ThisWorkbook .

  6. Do souboru kódu přidejte následující kód jazyka VBA. Tento kód nejprve získá COMAddIn objekt, který představuje Doplněk ExcelImportData VSTO. Pak kód používá Object vlastnost COMAddIn objekt volání ImportData metody.

    Sub CallVSTOMethod()
        Dim addIn As COMAddIn
        Dim automationObject As Object
        Set addIn = Application.COMAddIns("ExcelImportData")
        Set automationObject = addIn.Object
        automationObject.ImportData
    End Sub
    
  7. Stiskněte klávesu F5.

  8. Ověřte, že se do sešitu přidal nový importovaný datový list. Ověřte také, že buňka A1 obsahuje řetězec Toto je moje data.

  9. Ukončete Excel.

Další kroky

Další informace o programování doplňků VSTO najdete v těchto tématech: