Compartilhar via


Como: Expor código 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.

Você pode expor código em um projeto do Visual C# para Visual Basic para código Applications (VBA) se desejar que os dois tipos de código para interagir com cada Outro.

O processo do Visual C# é diferente de o processo do Visual Basic.Para obter mais informações, consulte Chamar o código em nível de documento personalizações do VBA e Como: Expor código VBA em um projeto do Visual Basic.

Expor código em um projeto do Visual C#

Para ativar o código do VBA chamar o código em um projeto do Visual C#, modificar o código para que ele fique visível para COM e, em seguida, definir ReferenceAssemblyFromVbaProject propriedade para Verdadeiro no designer.

Para um explicação passo a passo que demonstra como chamar um método em um projeto do Visual C# do VBA, consulte Demonstra Passo a passo: Chamar o código de VBA em um projeto do Visual C#.

Para expor código em um projeto do Visual C# para VBA

  1. Abrir ou criar um projeto de nível de documento que for baseado em um documento, pasta de trabalho do Excel ou modelo do Excel que ofereça suporte a macros do Word e que já contenha código VBA.

    Para obter mais informações sobre os formatos de arquivo documento que oferecem suporte a macros, consulte Chamar o código em nível de documento personalizações do VBA.

    Observação:

    Esse recurso não pode ser usado no Word t projetos de emplate.

  2. Garantir que o código do VBA do documento tem permissão para executar sem avisar o usuário para habilitar as macros.Você pode confiar em código VBA seja executado, adicionando o local do projeto Ferramentas do Visual Studio para o Office à lista de locais confiáveis na relação de confiança Centralizar configurações para o Word ou Excel.

  3. Adicionar o membro que você deseja expor para VBA para uma classe Público em seu projeto e declare o novo membro como public.

  4. Aplicar o seguinte ComVisibleAttribute e ClassInterfaceAttribute atributos a classe que você está expondo a VBA.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)]
    
  5. Substituir o método GetAutomationObject de uma classe de item de host em seu projeto para retornar uma instância da classe que você está expondo a VBA:

    • Se você estiver expondo uma classe de item de host para VBA, Substituir o método GetAutomationObject que pertence a esta classe e retornar a instância atual da classe.

      protected override object GetAutomationObject()
      {
          return this;
      }
      
    • Se você estiver expondo uma classe que não é um item de host para VBA, Substituir o método GetAutomationObject de qualquer host item no seu projeto e retornar uma instância da classe item não host.Por exemplo, o código a seguir assume que você estiver expondo uma classe chamada DocumentUtilities para VBA.

      protected override object GetAutomationObject()
      {
          return new DocumentUtilities();
      }
      

    Para obter mais informações sobre os itens de host, consulte Itens de host e Visão geral sobre controles de host.

  6. Extrair uma interface de classe que você está expondo a VBA.Na caixa de diálogo Extrair interface, Selecionar os membros públicos que você deseja incluir na declaração de interface.For more information, see Como: Refatorar o código com extrair interface.

  7. Adicionar a palavra-chave public para a declaração de interface.

  8. Tornar a interface visível a COM, adicionando o seguinte atributo de ComVisibleAttribute à interface.

    [System.Runtime.InteropServices.ComVisible(true)]
    
  9. Abrir o documento (para o Word) ou a planilha (para o Excel) no designer em Visual Studio.

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

    Observação:

    Se a pasta de trabalho ou o documento não já contém código VBA ou se o código do VBA no documento não é confiável para ser executado, você receberá uma mensagem de erro quando você define o ReferenceAssemblyFromVbaProject propriedade de a Verdadeiro.Isso ocorre porque Ferramentas do Visual Studio para o Office não é possível modificar o projeto do VBA no documento nessa situação.

  11. Clique em OK na mensagem que é exibida.Esta mensagem lembra que se você adicionar código do VBA para a pasta de trabalho ou o documento ao Executando o projeto do Visual Studio, o código do VBA serão perdido na Avançar vez que você ComCompilação o projeto.Isso ocorre porque o documento a compilação de saída pasta é substituída toda vez que você criar o projeto.

    Neste ponto, Ferramentas do Visual Studio para o Office configura o projeto para que o projeto do VBA pode chamar o assembly.Ferramentas do Visual Studio para o Office também adiciona um método chamado GetManagedClass para o projeto VBA.Você pode chamar esse método de qualquer lugar no projeto VBA para acessar a classe que é exposto a VBA.For more information, see Chamar o código em nível de documento personalizações do VBA.

  12. Crie o projeto.

Consulte também

Tarefas

Como: Criar o Visual Studio Tools para projetos do Office

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

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

Conceitos

Criar soluções do Office no Visual Studio

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

Chamar o código em nível de documento personalizações do VBA