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:
Edice Visual Studia 2013, která zahrnuje nástroje Microsoft Office Developer Tools. Další informace najdete v tématu Konfigurace počítače pro vývoj řešení pro systém Office.
Excel 2013 nebo Excel 2010.
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
Vytvoření projektu aplikace Excel s názvem ExcelImportData pomocí šablony projektu doplněk aplikace Excel.Další informace naleznete v tématu Postupy: Vytváření projektů pro systém Office v prostředí Visual Studio.
Visual StudioOtevře ThisAddIn.cs nebo ThisAddIn.vb soubor kódu a přidá ExcelImportData projektu Průzkumníku.
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
V nabídce Projekt klikněte na Přidat třídu.
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.
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;
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
V Průzkumníku, rozbalte Excel.
Klepněte pravým tlačítkem ThisAddIn.cs nebo ThisAddIn.vba klepněte na tlačítko Zobrazení kódu.
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; }
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
Stisknutím klávesy F5 spustit projektu.
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.
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.
V kód skupinu, klepněte na jazyka Visual Basic.
Otevře se Editor jazyka Visual Basic.
V projektu okno, poklepejte na ThisWorkbook.
Soubor kódu ThisWorkbook otevře objekt.
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
Stisknutím klávesy F5.
Ověřte, zda nový Importována Data list do sešitu.Ověřte také, že buňka A1 obsahuje řetězec je moje data.
Ukončete aplikaci Excel.
Další kroky
Další informace o programování doplňky z těchto témat:
Použití ThisAddIn třídy automatizovat hostitelské aplikace a provádět další úkoly v projektech doplňku.Další informace naleznete v tématu Programování doplňků na úrovni aplikace.
Vytvořte vlastní podokno úloh v v.Další informace naleznete v tématu Vlastní podokna úloh a Postupy: Přidání vlastního podokna úloh do aplikace.
Přizpůsobení pásu karet v doplňku.Další informace naleznete v tématu Přehled pásu karet a Postupy: Začínáme s přizpůsobením pásu karet.
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í