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
Versão do Microsoft Office
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
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.
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.
Adicionar o membro que você deseja expor para VBA para uma classe Público em seu projeto e declare o novo membro como public.
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)]
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.
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.
Adicionar a palavra-chave public para a declaração de interface.
Tornar a interface visível a COM, adicionando o seguinte atributo de ComVisibleAttribute à interface.
[System.Runtime.InteropServices.ComVisible(true)]
Abrir o documento (para o Word) ou a planilha (para o Excel) no designer em Visual Studio.
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.
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.
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