Compartilhar via


Passo a passo: Chamando o código de um suplemento em nível de aplicativo do VBA

Essa explicação passo a passo demonstra como expor um objeto em um suplemento ao nível para outras soluções do Office, incluindo Microsoft Visual Basic é VBA Applications () e suplementos COM.

Aplicável a: As informações neste tópico se aplicam a projetos em níveis de aplicativo o Microsoft Office 2013 e o Microsoft Office 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Embora este passo-a-passo use Excel especificamente, os conceitos demonstrado pelo passo-a-passo são aplicáveis a qualquer modelo de projeto do suplemento fornecido pelo Visual Studio.

Essa explicação passo a passo mostra as seguintes tarefas:

  • Definindo uma classe que pode ser exposta para outras soluções do Office.

  • A classe expõe a outras soluções do Office.

  • Chamando um método da classe do código de VBA.

ObservaçãoObservação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações de Visual Studio.

Pré-requisitos

Para completar este passo-a-passo, são necessários os seguintes componentes:

-

Uma edição do Visual Studio 2012 que inclui o Microsoft Office Developer Tools. Para obter mais informações, consulte [Configurando um computador para desenvolver soluções do Office](bb398242\(v=vs.110\).md).
  • Excel 2013 ou Excel 2010.

link para vídeo Para uma versão de vídeo de este tópico, consulte Como: exibição Chamando o código em um suplemento ao Nível de VBA.

Criando o projeto do suplemento

A primeira etapa é criar um projeto do suplemento para o excel.

para criar um novo projeto

  • Crie um projeto do suplemento do excel com o nome ExcelImportData, usando o modelo de projeto do suplemento do excel.Para obter mais informações, consulte Como: criar projetos do Office em Visual Studio.

    Visual Studio abre o arquivo de código de ThisAddIn.cs ou de ThisAddIn.vb e adiciona o projeto de ExcelImportData a Gerenciador de Soluções.

Definindo uma classe que você pode expor a outro Office soluções

O propósito de este explicação passo a passo é chamar o método em ImportData de uma classe denominada AddInUtilities no suplemento do código de VBA.Este método grava uma cadeia de caracteres na célula A1 a planilha ativo.

Para expor a classe de AddInUtilities a outras soluções do Office, você deve fazer o público da classe e visível COM.Você também deve expor a interface de IDispatch na classe.O código no procedimento a seguir demonstra uma maneira para atender aos requisitos.Para obter mais informações, consulte Chamar código nos suplementos de nível de aplicativo de outras soluções do Office.

Para definir uma classe que você pode expor a outro Office soluções

  1. No menu Project clique em Add Class.

  2. Em a caixa de diálogo de Adicionar novo item , altere o nome da nova classe a AddInUtilities, e clique Adicionar.

    O arquivo de AddInUtilities.cs ou de AddInUtilities.vb abre na editor de códigos.

  3. Adicione as instruções a seguir à parte superior do arquivo.

    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. Substitua a classe de AddInUtilities com o código a seguir.

    <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";
            }
        }
    }
    

    Este código faz a classe de AddInUtilities visível COM a, e o método de ImportData à classe.Para expor a interface de IDispatch , a classe de AddInUtilities também possui o atributo de ClassInterfaceAttribute , e implementa uma interface que está visível COM a.

A classe expõe a outras soluções do Office

Para expor a classe de AddInUtilities a outras soluções do Office, substituir o método de RequestComAddInAutomationService na classe de ThisAddIn .Em sua substituição, retornar uma instância da classe de AddInUtilities .

Para expor o AddInUtilities classe para outro Office soluções

  1. Em Gerenciador de Soluções, expanda Excel.

  2. Clique com o botão direito do mouse ThisAddIn.cs ou ThisAddIn.vb, clique em Exibir Código.

  3. Adicione o seguinte código à classe 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. No menu Build, clique em Build Solution.

    Verifique se a solução compile sem erros.

testando o suplemento

Você pode chamar em AddInUtilities a classe de vários tipos diferentes de soluções do Office.Em essa explicação passo a passo, você usará o código de VBA em uma pasta de trabalho do Excel.Para obter mais informações sobre outros tipos de soluções do Office você pode também usar, consulte Chamar código nos suplementos de nível de aplicativo de outras soluções do Office.

Para testar o suplemento

  1. Pressione F5 para executar o seu projeto.

  2. O excel, salve a pasta de trabalho como ativa uma pasta de trabalho habilitado para macro Excel (*.xlsm).Salve o em um local conveniente, como a área de trabalho.

  3. Em fita, clique na guia de Desenvolvedor .

    ObservaçãoObservação

    Se a guia de Desenvolvedor não estiver visível, primeiro você deve mostrar.Para obter mais informações, consulte Como: Mostrar guia desenvolvedor na faixa de opções.

  4. Em o grupo de Código , clique Visual Basic.

    O editor do Visual Basic abre.

  5. Em a janela de Projeto , clique duas vezes ThisWorkbook.

    O arquivo de código para o objeto de ThisWorkbook abre.

  6. Adicione o seguinte código de VBA para o arquivo de código.Esse código obtém primeiro um objeto de COMAddIn que representa o suplemento a ExcelImportData .Em seguida, o código usa a propriedade de Object do objeto de COMAddIn para chamar o método de ImportData .

    Sub CallVSTOMethod()
        Dim addIn As COMAddIn
        Dim automationObject As Object
        Set addIn = Application.COMAddIns("ExcelImportData")
        Set automationObject = addIn.Object
        automationObject.ImportData
    End Sub
    
  7. Pressione F5.

  8. Verifique que uma nova folha de Importados dados seja adicionada à pasta de trabalho.Também verifique que a célula A1 contém a cadeia de caracteres Este é my dados.

  9. Sair do excel.

Próximas etapas

Você pode aprender mais sobre programação de suplementos de esses tópicos:

Consulte também

Tarefas

Como: criar projetos do Office em Visual Studio

Conceitos

Chamar código nos suplementos de nível de aplicativo de outras soluções do Office

Arquitetura dos suplementos de nível de aplicativo

Personalizando os recursos de interface do usuário usando Interfaces de extensibilidade

Outros recursos

Os suplementos de nível de aplicativo de programação.

Desenvolvendo soluções do Office