Compartilhar via


Demonstra Passo a passo: Chamar o código de VBA em um projeto do Visual C#

Se aplica a

As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office.

Tipo de Projeto

  • Projetos de nível de documento

Versão do Microsoft Office

  • Microsoft Office Sistema de 2007

For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto.

Esta explicação passo a passo demonstra como chamar um método em uma personalização de nível de documento para o Microsoft Office Excel 2007 no Visual Basic para código Applications (VBA) na pasta de trabalho.O procedimento envolve três Basic etapas: Adicionar um método à classe de item de host de Sheet1, expor o método para código do VBA da pasta de trabalho e chamamos o método do código VBA da pasta de trabalho.

Embora esta explicação passo a passo usa o Excel especificamente, os conceitos demonstrados pelo explicação passo a passo também são aplicáveis aos projetos de nível de documento para o Microsoft Office Word 2007.

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

  • Criar uma pasta de trabalho que contenha código VBA.

  • Confiar em local de pasta de trabalho usando a relação de confiança Centralizar no Excel.

  • Adicionando um método à classe de item de host de Sheet1.

  • Extraindo uma interface para a classe de item de host Sheet1.

  • Expor o método para código do VBA.

  • Chamando o método de código do VBA.

Observação:

Seu computador pode mostrar diferentes nomes ou localizações 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, consulte Configurações do Visual Studio.

Pré-requisitos

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

  • Ferramentas do Visual Studio para o Office (um componente opcional do O Visual Studio 2008 Professional e Visual Studio Team System).

  • Microsoft Office Excel 2007.

Ferramentas do Visual Studio para o Office é instalado por padrão com as versões listadas do Visual Studio.Para Marcar se ele está instalado, Marcar Instalando o Visual Studio Tools para Office.

Criando uma pasta de trabalho que contém o código do VBA

A Primeiro etapa é criar uma pasta de trabalho de habilitado para macro que contenha uma macro VBA simples.Antes de você pode expor código em uma personalização para VBA, a pasta de trabalho já deve conter código do VBA.Caso contrário, Ferramentas do Visual Studio para o Office não é possível modificar o projeto do VBA para habilitar o código do VBA para chamar o assembly de Ferramentas do Visual Studio para o Office.

Se você já tiver uma pasta de trabalho que contenha código VBA que você deseja usar, você pode ignorar esta etapa.

Para criar uma pasta de trabalho que contém o código do VBA

  1. Iniciar Excel 2007.

  2. Salvar o documento ativo como uma pasta de trabalho de Excel Macro-Habilitado (*.xlsm) Com o nome WorkbookWithVBA .Salvar para um local conveniente, como a área de trabalho.

  3. Na faixa de opções, clique na guia de De desenvolvedor.

    Observação:

    Se a Guia do desenvolvedor não estiver visível, você primeiro deve mostrá-lo.For more information, see Como: Mostrar a guia Desenvolvedor na Faixa de Opções.

  4. No AAgruparar de De código de , clique em do Visual Basic.

    O Editor do Visual Basic é aberto.

  5. Na janela Projeto , clique Duplo em ThisWorkbook.

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

  6. Adicionar o seguinte código VBA para o arquivo de código.Esse código define uma função simples que não faz nada.A única finalidade desta função é Certifique-se que um projeto do VBA existe na pasta de trabalho.Isso é necessário para etapas posteriores nesta explicação passo a passo.

    Sub EmptySub()
    End Sub
    
  7. Salvar o documento e Sair Word.

Criando o projeto

Agora você pode criar um projeto de nível de documento para o Excel 2007 que usa a pasta de trabalho habilitado para macro criado anteriormente.

Para criar um novo projeto

  1. Inicie o Visual Studio

  2. No menu File, aponte para New, e em seguida, clique em Project.

  3. No painel de A Projeto Types, Expandirir **Visual C#**e em seguida, Expandirir Office.

  4. Selecionar a pasta de 2007.

  5. No painel modelos, Selecionar o projeto de pasta de trabalho do Excel.

  6. Na caixa Nome, tipo CallingCodeFromVBA.

  7. Clique em OK.

    Abre o Visual Studio Tools para Office Projeto Assistente.

  8. Selecionar Copiar um documento existentee, no caminho completo Da caixa de de documento existente, especifique o local da WorkbookWithVBA pasta de trabalho que você criou anteriormente.Se você estiver usando sua própria pasta de trabalho habilitado para macro, especifique o local da pasta de trabalho em vez disso.

  9. Clique em Finish.

    Visual Studio abre a pasta de trabalho WorkbookWithVBA no designer e o adiciona o projeto de CallingCodeFromVBA para Gerenciador de Soluções.

Confiar no local da pasta de trabalho

Antes de você pode expor código em sua solução ao código do VBA da pasta de trabalho, você deve confiar VBA da pasta de trabalho para ser executado.Há várias maneiras para fazer isso.Nesta explicação passo a passo, você irá realizar essa tarefa por confiar em local de pasta de trabalho em Confiança Centralizar no Excel.

Confiar em local de pasta de trabalho

  1. Excel Iniciar.

  2. Click the Microsoft Office Button.

  3. Clique no botão de Opções do Excel.

  4. No painel de categorias, clique em Confiar Central.

  5. No painel de detalhes, clique De Confiar Centralizar configurações.

  6. No painel de categorias, clique em Locais confiáveis.

  7. No painel de detalhes, clique Adicionar novo local.

  8. Na caixa de diálogo Local confiável do Microsoft Office, Procurar para a pasta que contém o projeto CallingCodeFromVBA.

  9. Selecionar Subpastas deste local também são confiáveis.

  10. Em Local confiável do Microsoft Office Caixa de Diálogo, clique em OK.

  11. Na caixa diálogo Confiar Central , clique em OK.

  12. Em Opções do Excel Caixa de Diálogo, clique em OK.

  13. Sair Excel.

Adicionar um método da a classe de Sheet1

Agora que o projeto do VBA está configurado, Adicionar um método público para a classe de item de host Sheet1 que você pode chamar do código do VBA.

Para adicionar um método da a classe de Sheet1

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse Sheet1.cse clique em Exibir Code.

    O arquivo de de Sheet1.cs abre no editor de códigos.

  2. Adicione o seguinte código à classe Sheet1:O método CreateVstoNamedRange cria um novo objeto NamedRange no intervalo especificado.Esse método também cria um manipulador de eventos para o evento Selected do NamedRange.Posteriormente nesta explicação passo a passo, você chamará o código do CreateVstoNamedRange método de VBA do documento.

    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. Adicionar o seguinte método à classe Sheet1.Esse método substitui o método GetAutomationObject para retornar a instância atual da classe Sheet1.

    protected override object GetAutomationObject()
    {
        return this;
    }
    
  4. Aplicar os seguintes atributos antes da Primeiro linha da declaração da classe Sheet1.Esses atributos tornar visível a classe COM, mas sem gerar uma interface de classe.

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

Extrair uma interface para a classe de Sheet1

Antes de você pode expor o método CreateVstoNamedRange para código do VBA, você deverá criar uma interface Público que define este método, e você deve expor essa interface para com.

Para extrair uma interface para a classe de Sheet1

  1. No arquivo de código a Sheet1.cs , clique em qualquer lugar na classe Sheet1.

  2. No Refatorar menu, clique em Extrair interface.

  3. Na caixa de diálogo extrair interface, in the Selecionar membros públicos para Formulárioar interface caixa, clique na entrada para o método CreateVstoNamedRange.

  4. Clique em OK.

    Visual Studio gera uma Novo interface chamada ISheet1, e ele modifica a definição da classe Sheet1 para que ela implementa a interface de ISheet1.Visual Studio também abre o arquivo de de ISheet1.cs no editor de códigos.

  5. No arquivo ISheet1.cs, Substituir a declaração de interface de ISheet1 com o código a seguir.Esse código torna a interface de ISheet1 Público e ele se aplica o atributo ComVisibleAttribute para tornar a interface visível para com.

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

Expor o método para código do VBA

Para expor o método CreateVstoNamedRange para código do VBA da pasta de trabalho, defina a propriedade de ReferenceAssemblyFromVbaProject para o item de hostSheet1 como Verdadeiro.

Para expor o método para código do VBA

  1. Em Gerenciador de Soluções, clique Duplo em Sheet1.cs.

    O arquivo de WorkbookWithVBA abre no designer, com Plan1 visível.

  2. Na janela Propriedades , Selecionar ReferenceAssemblyFromVbaProject propriedade, e Alterar o valor de Verdadeiro .

  3. Clique em OK na mensagem que é exibida.

  4. Crie o projeto.

Chamar o código de VBA de método

Agora você pode chamar o método CreateVstoNamedRange do código VBA da pasta de trabalho.

Observação:

Esta explicação passo a passo, você irá adicionar código do VBA para o pasta de trabalho durante a Depurando do projeto.O Código do VBA que você adicionar a este documento será substituído na Avançar vez que você criar o projeto, porque o Visual Studio substituirá o documento na pasta de saída de compilação com uma Copiar do documento da pasta do projeto principal.Se você desejar salvar o código do VBA , você pode Copiar-las para o documento na pasta projeto .Para obter mais informações, consulte Chamar o código em nível de documento personalizações do VBA.

Para chamar o código de VBA de método

  1. Pressionarionar F5 para executar seu projeto.

  2. Na guia de Developer, no AAgruparar código, clique em do Visual Basic.

    O Editor do Visual Basic é aberto.

  3. No menu Inserir, clique em Módulo.

  4. Adicionar o seguinte código para o novo módulo.

    Este código chama o método CreateTable no assembly Ferramentas do Visual Studio para o Office.A macro acessa esse método usando o método global GetManagedClass para acessar a classe de item de host Sheet1 que você expostos a código do VBA.O método GetManagedClass foi gerado automaticamente quando você definir ReferenceAssemblyFromVbaProject propriedade anteriormente nesta explicação passo a passo.

    Sub CallVSTOMethod()
        Dim VSTOSheet1 As CallingCodeFromVBA.Sheet1
        Set VSTOSheet1 = GetManagedClass(Sheet1)
        Call VSTOSheet1.CreateVstoNamedRange(Sheet1.Range("A1"), "VstoNamedRange")
    End Sub
    
  5. Pressione F5.

  6. No Abrir pasta de trabalho, clique em célula A1 no Sheet1.Verifique se a caixa de mensagem é exibida.

  7. Sair Excel sem Salvando as alterações.

Próximas etapas

Você pode saber mais sobre como chamar código em Ferramentas do Visual Studio para o Office soluções do VBA nestes tópicos:

Consulte também

Tarefas

Como: Expor código VBA em um projeto do Visual Basic

Como: Expor código VBA em um projeto do Visual C#

Demonstra Passo a passo: Chamar o código de VBA em um projeto do Visual Basic

Conceitos

Combinação de VBA e personalizações de nível de documento

Personalizações de nível de documento de programação