Compartilhar via


Demonstra Passo a passo: Código de chamada em um suplemento VSTO do VBA

Este passo a passo demonstra como expor um objeto em um suplemento VSTO para outras soluções do Microsoft Office, incluindo Visual Basic for Applications (VBA) e suplementos VSTO COM.

Aplica-se a: As informações neste tópico se aplicam a projetos de suplemento VSTO. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Embora este passo a passo usa o Excel especificamente, os conceitos demonstrados pelo passo a passo são aplicáveis a qualquer modelo de projeto de suplemento VSTO fornecido pelo Visual Studio.

Este passo a passo ilustra as seguintes tarefas:

  • Definir uma classe que pode ser exposta a outras soluções do Office.

  • Expondo a classe a outras soluções do Office.

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

    Observação

    Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de 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, confira Personalizar o IDE.

Pré-requisitos

Você precisará dos seguintes componentes para concluir este passo a passo:

Criar o projeto de suplemento VSTO

A primeira etapa é criar um projeto de suplemento VSTO para Excel.

Criar um novo projeto

  1. Crie um projeto de suplemento VSTO do Excel com o nome ExcelImportData, usando o modelo de projeto de suplemento VSTO do Excel. Para obter mais informações, consulte Como: Criar projetos do Office no Visual Studio.

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

Definir uma classe que você pode expor a outras soluções do Office

O objetivo deste passo a passo é chamar o ImportData método de uma classe nomeada AddInUtilities em seu suplemento VSTO a partir do código VBA. Esse método grava uma cadeia de caracteres na célula A1 da planilha ativa.

Para expor a classe a outras soluções do Office, você deve tornar a AddInUtilities classe pública e visível para COM. Você também deve expor a interface IDispatch na classe. O código no procedimento a seguir demonstra uma maneira de atender a esses requisitos. Para obter mais informações, consulte Código de chamada em suplementos VSTO de outras soluções do Office.

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

  1. No menu Project , clique em Adicionar classe .

  2. Na caixa de diálogo Adicionar Novo Item, altere o nome da nova classe para AddInUtilities e clique em Adicionar.

    O arquivo AddInUtilities.cs ou AddInUtilities.vb é aberto no Editor de códigos.

  3. Adicione as seguintes diretivas à parte superior do arquivo.

    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. Substitua a classe AddInUtilities pelo código a seguir.

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

    Esse código torna a AddInUtilities classe visível para COM e adiciona o ImportData método à classe. Para expor a interface IDispatch, a AddInUtilities classe também tem o ClassInterfaceAttribute atributo e implementa uma interface visível para COM.

Expor a classe a outras soluções do Office

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

Para expor a classe AddInUtilities a outras soluções do Office

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

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

  3. Adicione o código a seguir à classe ThisAddIn .

    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. No menu Compilar, clique em Compilar Solução.

    Verifique se a solução é compilada sem erros.

Testar o suplemento VSTO

Você pode chamar a AddInUtilities classe de vários tipos diferentes de soluções do Office. Nesta explicação passo a passo, você usará o código VBA em uma pasta de trabalho do Excel. Para obter mais informações sobre os outros tipos de soluções do Office que você também pode usar, consulte Código de chamada em suplementos VSTO de outras soluções do Office.

Para testar o suplemento VSTO

  1. Pressione F5 para executar o projeto.

  2. No Excel, salve a pasta de trabalho ativa como uma pasta de trabalho habilitada para macro do Excel (*.xlsm). Salve-o em um local conveniente, como a área de trabalho.

  3. Na Faixa de Opções, clique na guia Desenvolvedor .

    Observação

    Se a guia Desenvolvedor não estiver visível, você deverá mostrá-la primeiro. Para obter mais informações, consulte Como mostrar a guia do desenvolvedor na Faixa de Opções.

  4. No grupo Código, clique em Visual Basic.

    O Editor do Visual Basic é aberto.

  5. Na janela Projeto, clique duas vezes em ThisWorkbook.

    O arquivo de código para o ThisWorkbook objeto é aberto.

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

    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 se uma nova folha de dados importados foi adicionada à pasta de trabalho. Verifique também se a célula A1 contém a cadeia de caracteres Estes são os meus dados.

  9. Saia do Excel.

Próximas etapas

Você pode saber mais sobre a programação de suplementos VSTO a partir destes tópicos: