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

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

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

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

This walkthrough illustrates the following tasks:

  • A definição de uma classe que pode ser exposta a outras soluções do Office.

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

  • Chamar um método da classe do código do 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 do Visual Studio.

Pré-requisitos

You need the following components to complete this walkthrough:

-

Uma edição do Visual Studio 2010 que inclua as ferramentas de desenvolvedor do Microsoft Office. Para obter mais informações, consulte [Configurando um computador para desenvolver soluções do Office](bb398242\(v=vs.100\).md).
  • Excel 2007 ou Excel 2010.

link para vídeo Para obter uma versão de vídeo deste tópico, consulte vídeo How to: Chamar o código do VBA em um suplemento em nível de aplicativo.

Criando o projeto de suplemento

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

Para criar um novo projeto.

  • Crie um projeto de suplemento do Excel com o nome ExcelImportData, usando o modelo de projeto de suplemento do Excel. For more information, see Como: Criar projetos do Office em Visual Studio.

    Visual StudioAbre a ThisAddIn.cs ou ThisAddIn. vb arquivo de código e adiciona a ExcelImportData de projeto para Solution Explorer.

A definição de uma classe que você pode expor a outras soluções do Office

A finalidade desta explicação passo a passo é chamar o ImportData o método de uma classe chamada AddInUtilities no seu suplemento de código do VBA. Esse método grava uma seqüência de caracteres na célula A1 da planilha ativa.

Para expor o AddInUtilities classe a outras soluções do Office, você deve fazer a classe pública e visível para com. Você também deve expor o IDispatch interface na classe. O código no procedimento a seguir demonstra uma maneira de atender a esses requisitos. For more information, see Código de chamada no nível do aplicativo Add-ins de outras soluções do Office.

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

  1. On the Project menu, click Add Class.

  2. No Add New Item caixa de diálogo, altere o nome da nova classe para AddInUtilitiese clique em Add.

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

  3. Adicione as seguintes instruções para a 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. Substituir o AddInUtilities classe 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 o AddInUtilities classe visível para COM e adiciona a ImportData método para a classe. Para expor o IDispatch interface, o AddInUtilities classe também tem a ClassInterfaceAttribute atributo e ele implementa uma interface que está visível para com.

Expondo a classe de outras soluções do Office

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

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

  1. Em Solution Explorer, expanda Excel.

  2. Com o botão direito ThisAddIn.cs ou ThisAddIn. vbe em seguida, clique em Exibir código.

  3. Add the following code to the ThisAddIn class.

    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. Sobre o Build menu, clique em Build Solution.

    Verifique se que a solução foi compilado sem erros.

Testando o suplemento

Você pode chamar o AddInUtilities classe a partir de vários tipos diferentes de soluções do Office. Esta explicação passo a passo, você usará o código do VBA em uma pasta de trabalho do Excel. Para obter mais informações sobre outros tipos de soluções do Office, você também pode usar, consulte Código de chamada no nível do aplicativo Add-ins de outras soluções do Office.

Para testar seu suplemento

  1. Pressione F5 para executar seu projeto.

  2. No Excel, salve a pasta de trabalho ativa como uma pasta de trabalho do Excel Macro-Enabled (*.xlsm). Salve-o em um local conveniente, como, por exemplo, a área de trabalho.

  3. Na faixa de opções, clique no Developer guia.

    ObservaçãoObservação

    Se o Developer guia não estiver visível, você deve primeiro mostrá-lo. For more information, see Como: Mostrar guia desenvolvedor na faixa de opções.

  4. No código de grupo, clique em Visual Basic.

    O Editor de Visual Basic é aberto.

  5. No projeto janela, clique duas vezes em ThisWorkbook.

    O arquivo de código para o ThisWorkbook objeto será aberta.

  6. Adicione o seguinte código do VBA para o arquivo de código. Primeiro este código obtém uma COMAddIn o objeto que representa o ExcelImportData add-in. Em seguida, o código usa a Object propriedade da COMAddIn o objeto 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. Press F5.

  8. Verificar se um novo Os dados importados folha foi adicionada à pasta de trabalho. Verifique também se a célula A1 contém a seqüência Meus dados.

  9. Saia do Excel.

Próximas etapas

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

Consulte também

Tarefas

Como: Criar projetos do Office em Visual Studio

Conceitos

Código de chamada no nível do aplicativo Add-ins de outras soluções do Office

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

Arquitetura dos suplementos de nível de aplicativo

Outros recursos

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

Desenvolvimento de soluções do Office