Sdílet prostřednictvím


Návod: Volání kódu z jazyka VBA v projektu jazyka Visual C#

Tento návod ukazuje, jak volat metodu přizpůsobení úroveň dokument aplikace Microsoft Office Excel z jazyka Visual Basic pro Applications (VBA) kód v sešitu.Postup zahrnuje tři základní kroky: Přidat metodu k Sheet1 hostitel položky třídy vystavit metodu do kódu jazyka VBA v sešitu a potom zavolejte metodu z kódu jazyka VBA v sešitu.

Platí pro: Informace v tomto tématu se vztahují na projekty na úrovni dokumentu v těchto aplikacích: Excel 2013 a Excel 2010; Word 2013 a Word 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á aplikace Excel konkrétně, pojmy prokázat návodu platí také na projekty na úrovni dokumentu aplikace Word.

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

  • Vytvoření sešitu, který obsahuje kód jazyka VBA.

  • Důvěřující umístění sešitu pomocí Centra zabezpečení v aplikaci Excel.

  • Přidání metody do Sheet1 hostitel položky třídy.

  • Rozhraní pro extrahování Sheet1 hostitel položky třídy.

  • Vystavení metodu do kódu jazyka VBA.

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

[!POZNÁMKA]

Váš počítač může zobrazit jiné názvy nebo umístění pro některé prvky uživatelského rozhraní sady Visual Studio v následujících pokynech.Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením.Další informace naleznete 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:

Vytvoření sešitu, který obsahuje kód jazyka VBA

Prvním krokem je vytvořit sešit s podporou maker, který obsahuje jednoduché makra VBA.Před kód vlastního kódu VBA můžete vystavit, sešit, již obsahovat kód jazyka VBA.Visual Studio, jinak nelze změnit projekt VBA povolit kód VBA k volání do vlastního sestavení.

Pokud již máte sešit obsahující kód VBA, který chcete použít, můžete tento krok přeskočit.

Chcete-li vytvořit sešit, který obsahuje kód jazyka VBA

  1. Spuštění aplikace Excel.

  2. Uložit aktivní dokument, jako Excel Macro-Enabled sešitu (*.xlsm) s názvem WorkbookWithVBA.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 definuje jednoduché funkce, která nemá žádnou.Jediným účelem této funkce je zajistit, že projekt VBA v sešitu existuje.To je vyžadováno pro pozdější kroky v tomto návodu.

    Sub EmptySub()
    End Sub
    
  7. Uložte dokument a ukončete aplikaci Excel.

Vytváření projektu

Nyní můžete vytvořit projekt úroveň dokumentu aplikace Excel, který používá sešit s podporou maker, který jste vytvořili dříve.

Vytvoření nového projektu

  1. Spusťte nástroj Visual Studio.

  2. V nabídce File (Soubor) přejděte na příkaz New (Nový) a klepněte na příkaz Project (Projekt).

  3. Rozbalte v podokně šablony **Visual C#**a potom rozbalte Office/SharePoint.

  4. Vyberte Doplňky sady Office uzlu.

  5. Vyberte v seznamu šablon projektu Sešit aplikace Excel 2010 nebo 2013 sešit aplikace Excel projektu.

  6. V název zadejte CallingCodeFromVBA.

  7. Klikněte na tlačítko OK.

    Visual Studio Tools for Office Project Průvodce otevře.

  8. Vyberte zkopírovat existující dokumenta v úplnou cestu k existující dokument zadejte umístění, WorkbookWithVBA sešit, který jste vytvořili dříve.Pokud používáte vlastní sešit s podporou maker, zadejte umístění sešitu.

  9. Klepněte na tlačítko Dokončit.

    Visual StudioOtevře WorkbookWithVBA sešitu v návrháři a přidá CallingCodeFromVBA projektu Průzkumníku.

Důvěřující umístění sešitu

Než vystavíte kódu v kódu VBA sešitu řešení musí důvěřovat VBA sešitu spuštění.To provést několika způsoby.V tomto návodu provedení této úlohy důvěryhodnou umístění v sešitu Centra v aplikaci Excel.

Důvěryhodných umístění sešitu

  1. Spuštění aplikace Excel.

  2. Klepněte soubor kartu.

  3. Klepněte Možnosti aplikace Excel tlačítko.

  4. V podokně kategorie na Centra.

  5. V podokně podrobností klepněte na Nastavení Centra zabezpečení.

  6. V podokně kategorie na Důvěryhodných umístění.

  7. V podokně podrobností klepněte na Přidat nové umístění.

  8. V Microsoft Office důvěryhodné umístění dialogové okno, vyhledejte složku, která obsahuje projekt CallingCodeFromVBA.

  9. Vyberte podsložky tohoto umístění jsou také důvěryhodné.

  10. V Microsoft Office důvěryhodné umístění dialogové okno, klepněte na OK.

  11. V Centra dialogové okno, klepněte na OK.

  12. V Možnosti aplikace Excel dialogové okno, klepněte na OK.

  13. Konec Excel.

Přidání metody do třídy List1

Projekt VBA je nastaven, přidat veřejnou metodu Sheet1 hostitele třídy položky, které lze volat z kódu jazyka VBA.

Přidat metodu třídy List1

  1. V Průzkumníku, klepněte pravým tlačítkem Sheet1.csa klepněte na tlačítko Zobrazení kódu.

    Sheet1.cs soubor se otevře v editoru kódu.

  2. Přidejte následující kód do třídy Sheet1.CreateVstoNamedRange Metoda vytvoří nový NamedRange objekt na zadaný rozsah.Tato metoda také vytvoří obslužnou rutinu události Selected události NamedRange.Dále v tomto návodu budete volat CreateVstoNamedRange metody z kódu jazyka VBA v dokumentu.

    private Microsoft.Office.Tools.Excel.NamedRange namedRange1;
    
    public void CreateVstoNamedRange(Excel.Range range, string name)
    {
        if (!this.Controls.Contains(name))
        {
            namedRange1 = this.Controls.AddNamedRange(range, name);
            namedRange1.Selected += new Excel.DocEvents_SelectionChangeEventHandler(
                    namedRange1_Selected);
        }
        else
        {
            MessageBox.Show("A named range with this specific name " +
                "already exists on the worksheet.");
        }
    }
    
    private void namedRange1_Selected(Microsoft.Office.Interop.Excel.Range Target)
    {
        MessageBox.Show("This named range was created by Visual Studio " +
            "Tools for Office.");
    }
    
  3. Přidejte následující metodu Sheet1 třídy.Tato metoda potlačí GetAutomationObject metoda vrátí aktuální instance Sheet1 třídy.

    protected override object GetAutomationObject()
    {
        return this;
    }
    
  4. Následující atributy před první řádek Sheet1 deklarace třídy.Tyto atributy zviditelnit třídy COM, ale bez generování rozhraní třídy.

    [System.Runtime.InteropServices.ComVisible(true)]
    [System.Runtime.InteropServices.ClassInterface(
        System.Runtime.InteropServices.ClassInterfaceType.None)]
    

Extrahování rozhraní třídy List1

Dříve než můžete vystavit CreateVstoNamedRange metodu do kódu VBA je nutné vytvořit veřejné rozhraní, který definuje tuto metodu a musí vystavit rozhraní modelu COM.

Extrahovat rozhraní třídy List1

  1. V Sheet1.cs kódu souboru, klepněte na libovolné místo Sheet1 třídy.

  2. Na Refaktorovat nabídky, klepněte na Extrahovat rozhraní.

  3. V Extrahovat rozhraní v dialogovém okně pole Vyberte veřejné členy rozhraní formuláře klepněte na položku CreateVstoNamedRange metoda.

  4. Klikněte na tlačítko OK.

    Visual Studiogeneruje nové rozhraní s názvem ISheet1, a upraví definice Sheet1 třída implementuje tak, aby ISheet1 rozhraní.Visual StudioOtevře také ISheet1.cs souboru v editoru kódu.

  5. V ISheet1.cs soubor, nahradit ISheet1 rozhraní prohlášení následujícím kódem.Tento kód vytvoří ISheet1 veřejných rozhraní a vztahuje se ComVisibleAttribute atribut zviditelnit rozhraní COM.

    [System.Runtime.InteropServices.ComVisible(true)]
    public interface ISheet1
    {
        void CreateVstoNamedRange(Microsoft.Office.Interop.Excel.Range range, string name);
    }
    
  6. Projekt sestavte.

Vystavení metodu do kódu jazyka VBA

Vystavit CreateVstoNamedRange nastavte metodu do kódu jazyka VBA v sešitu, ReferenceAssemblyFromVbaProject vlastnost Sheet1 položku hostitele True.

Vystavit metodu do kódu jazyka VBA

  1. V Průzkumníku, poklepejte na Sheet1.cs.

    WorkbookWithVBA soubor se otevře v Návrháři s List1 viditelné.

  2. V Vlastnosti vyberte ReferenceAssemblyFromVbaProject vlastnost a změňte hodnotu na True.

  3. Klepněte na OK v zobrazené zprávě.

  4. Projekt sestavte.

Volání metody z kódu jazyka VBA

Nyní můžete volat CreateVstoNamedRange metody z kódu jazyka VBA v sešitu.

[!POZNÁMKA]

V tomto návodu přidáte kód VBA sešitu při ladění projektu.Kód jazyka VBA, které přidáte do tohoto dokumentu bude přepsán při příštím sestavení projektu, protože Visual Studio nahradí kopii dokumentu ze složky hlavní projekt dokumentu ve výstupní složce sestavení.Pokud chcete uložit kód VBA, zkopírujte jej do dokumentu ve složce projektu.Další informace naleznete v tématu Kombinování přizpůsobení na úrovních VBA a dokumentu.

Volání metody z kódu jazyka VBA

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

  2. Na Developer v kartě kód skupinu, klepněte na Visual Basic.

    Otevře se Editor jazyka Visual Basic.

  3. Na Vložení nabídky, klepněte na modulu.

  4. Přidejte následující kód do nového modulu.

    Tento kód volá CreateTable metodu v sestavení vlastního nastavení.Makro přistupuje tato metoda pomocí globálního GetManagedClass metody přístup Sheet1 hostitel položky třídu, která je vystavena kód VBA.GetManagedClass Metoda byla automaticky generována při nastavení ReferenceAssemblyFromVbaProject vlastnost dříve v tomto návodu.

    Sub CallVSTOMethod()
        Dim VSTOSheet1 As CallingCodeFromVBA.Sheet1
        Set VSTOSheet1 = GetManagedClass(Sheet1)
        Call VSTOSheet1.CreateVstoNamedRange(Sheet1.Range("A1"), "VstoNamedRange")
    End Sub
    
  5. Stisknutím klávesy F5.

  6. V otevřeném sešitu, klepněte na buňku A1 na List1.Ověřte, že se zobrazí okno zprávy.

  7. Ukončete aplikaci Excel bez uložení změn.

Další kroky

Další informace o volání kódu v řešeních Office z VBA v těchto tématech:

Viz také

Úkoly

Postupy: Vystavení kódu v projektu jazyka Visual Basic pro jazyk VBA

Postupy: Vystavení kódu v projektu jazyka Visual C# pro jazyk VBA

Návod: Volání kódu z jazyka VBA v projektu jazyka Visual Basic

Další zdroje

Kombinování přizpůsobení na úrovních VBA a dokumentu

Programování přizpůsobení na úrovni dokumentu