Como: Expor código VBA em um projeto do Visual C#
Você pode expor o código de um Visual C# projeto para Visual Basic for Applications o código VBA () se você desejar que os dois tipos de código para interagir entre si.
O processo do Visual C# é diferente do processo de Visual Basic. For more information, see Código de chamada personalizações em nível de documento do VBA and Como: Expor código VBA em um projeto de Visual Basic.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento para os seguintes aplicativos: Excel 2007 e Excel 2010; Word 2007 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
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 fique visível para COM e, em seguida, defina a ReferenceAssemblyFromVbaProject propriedade para True no designer.
Para uma 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 do VBA em um projeto do Visual C#.
Para expor o código em um projeto do Visual C# ao VBA
Abra ou crie um projeto de nível de documento que se baseia em um documento do Word, pasta de trabalho do Excel ou modelo do Excel oferece suporte a macros e que já contém o código do VBA.
Para obter mais informações sobre os formatos de arquivo do documento que oferecem suporte a macros, consulte Código de chamada personalizações em nível de documento do VBA.
Observação Este recurso não pode ser usado em projetos de modelo do Word.
Certifique-se de que o código do VBA no documento pode ser executado sem avisar o usuário habilitar as macros. Você pode confiar em código VBA, adicionando o local do projeto do Office à lista de locais confiáveis em que as configurações da Central de confiabilidade para o Word ou Excel.
Adicionar o membro que você deseja expor para o VBA para uma classe pública em seu projeto e declara um novo membro como public.
Aplicar o seguinte ComVisibleAttribute e ClassInterfaceAttribute atributos à classe que você está expondo a VBA. Esses atributos tornam 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 GetAutomationObject método 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 o VBA, substituir o GetAutomationObject método que pertence a essa classe e retorna a instância atual do que a classe.
protected override object GetAutomationObject() { return this; }
Se você estiver expondo uma classe que não é um item de host para o VBA, substituir o GetAutomationObject o método de qualquer host do item no seu projeto e retornar uma instância do host não item classe. Por exemplo, o código a seguir supõe que você estiver expondo uma classe chamada DocumentUtilities para VBA.
protected override object GetAutomationObject() { return new DocumentUtilities(); }
Para obter mais informações sobre itens de host, consulte Itens de host e a visão geral sobre controles de Host.
Extrai uma interface da classe que você está expondo a VBA. No Extrair Interface caixa de diálogo, selecione os membros públicos que você deseja incluir na declaração de interface. For more information, see Extrair Interface Refatoração (C#).
Adicionar o public palavra-chave para a declaração de interface.
Tornar a interface visível para COM adicionando o seguinte ComVisibleAttribute atributo para a interface.
[System.Runtime.InteropServices.ComVisible(true)]
Abra o documento (para Word) ou a planilha (Excel) no designer no Visual Studio.
No Propriedades janela, selecione o ReferenceAssemblyFromVbaProject propriedade e altere o valor para True.
Observação Se a pasta de trabalho ou o documento ainda não contiver código VBA ou se o código do VBA no documento não é confiável para executar, você receberá uma mensagem de erro ao definir o ReferenceAssemblyFromVbaProject propriedade para True. Isso ocorre porque Visual Studio não é possível modificar o projeto VBA do documento nesta situação.
Clique em OK na mensagem que é exibida. Esta mensagem lembra que, se você adicionar o VBA de código para a pasta de trabalho ou ao executar o projeto a partir de documentos Visual Studio, o código do VBA serão perdido na próxima vez que você construir o projeto. Isso ocorre porque o documento na compilação de pasta é sobrescrita sempre que você constrói o projeto de saída.
Neste ponto, Visual Studio configura o projeto de forma que o projeto do VBA pode chamar o assembly. Visual Studio também adiciona um método chamado GetManagedClass para o projeto do VBA. Você pode chamar esse método em qualquer lugar no projeto VBA para acessar a classe que é exposto a VBA. For more information, see Código de chamada personalizações em nível de documento do VBA.
Build the project.
Consulte também
Tarefas
Como: Criar projetos do Office em Visual Studio
Demonstra Passo a passo: Chamar o código do VBA em um projeto do Visual C#
Como: Expor código VBA em um projeto de Visual Basic
Conceitos
Código de chamada personalizações em nível de documento do VBA