Compartilhar via


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

Pode expor o código em um Visual Basic de projeto para Visual Basic for Applications o código VBA () se desejar que os dois tipos de código para interagir entre si.

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.

O processo de Visual Basic é diferente do processo C# Visual. 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 do Visual C#.

O processo é diferente para o código em uma classe de item de host para o código em outras classes:

  • Expor código em uma classe de item de host

  • Expor o código que não está em uma classe de item de host

link para vídeo Para uma demonstração de vídeo relacionada, consulte Fazer como i: Chamar o código do VSTO do VBA?.

Expor código em uma classe de Item de Host

Para ativar o código do VBA chamar o código de Visual Basic em uma classe de item de host, defina a EnableVbaCallers a propriedade do item de host, a True.

Para uma explicação passo a passo que demonstra como expor um método de uma classe de item de host e chamá-lo a partir do VBA, consulte Demonstra Passo a passo: Chamar o código do VBA em um projeto de Visual Basic. Para obter mais informações sobre itens de host, consulte Itens de host e a visão geral sobre controles de Host.

Para expor o código em um item de host para o VBA

  1. Abra ou crie um nível de documento Visual Basic projeto baseado em um documento do Word, a pasta de trabalho do Excel ou o modelo do Excel que ofereça 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çãoObservação

    Este recurso não pode ser usado em projetos de modelo do Word.

  2. 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.

  3. Adicione a propriedade, método ou evento que você deseja expor para uma das classes de item de host em seu projeto VBA e declara um novo membro como Public. O nome da classe depende do aplicativo:

    • Em uma palavra no projeto, a classe de item de host é denominada ThisDocument por padrão.

    • Em um projeto do Excel, as classes de item de host são nomeadas ThisWorkbook, Sheet1, Sheet2, e Sheet3 por padrão.

  4. Definir o EnableVbaCallers a propriedade do item de host para True. Esta propriedade está disponível na Propriedades janela quando o item de host é aberto no designer.

    Após você definir essa propriedade, Visual Studio define automaticamente a ReferenceAssemblyFromVbaProject propriedade para True. Para obter mais informações sobre essa propriedade, consulte Código de chamada personalizações em nível de documento do VBA.

    ObservaçãoObservaçã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 EnableVbaCallers propriedade para True. Isso ocorre porque Visual Studio não é possível modificar o projeto VBA do documento nesta situação.

  5. Clique em OK na mensagem que é exibida. Esta mensagem o lembra de que, se você adicionar o código do VBA para a pasta de trabalho ou o documento enquanto você está executando o projeto a partir 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 pasta de saída de compilação é sobrescrito sempre que você criar o projeto.

    Neste ponto, Visual Studio configura o projeto de forma que o projeto do VBA pode chamar o assembly. Visual Studio também adiciona uma propriedade chamada CallVSTOAssembly para o ThisDocument, ThisWorkbook, Sheet1, Sheet2, ou Sheet3 o módulo no projeto VBA. Você pode usar essa propriedade para acessar membros públicos da classe que você exposto ao VBA. For more information, see Código de chamada personalizações em nível de documento do VBA.

  6. Build the project.

Expor o código que não está em uma classe de Item de Host

Para ativar o código do VBA chamar o código de Visual Basic que não esteja em uma classe de item de host, modificar o código para que fique visível para o VBA.

Para expor o código que não está em uma classe de item de host para o VBA

  1. Abra ou crie um nível de documento Visual Basic projeto baseado em um documento do Word, a pasta de trabalho do Excel ou o modelo do Excel que ofereça 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çãoObservação

    Este recurso não pode ser usado em projetos de modelo do Word.

  2. 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.

  3. 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.

  4. Aplicar o seguinte ComVisibleAttribute e ComClassAttribute atributos à classe que você está expondo a VBA. Esses atributos fazem com que a classe visível do VBA.

    <Microsoft.VisualBasic.ComClass()> _
    <System.Runtime.InteropServices.ComVisibleAttribute(True)> _
    
  5. 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. O exemplo de código a seguir pressupõe que você estiver expondo uma classe chamada DocumentUtilities para VBA.

    Protected Overrides Function GetAutomationObject() As Object
        Return New DocumentUtilities()
    End Function
    
  6. Abra o documento (Word) ou o criador da planilha (Excel) em Visual Studio.

  7. No Propriedades janela, selecione o ReferenceAssemblyFromVbaProject propriedade e altere o valor para True.

    ObservaçãoObservaçã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.

  8. Clique em OK na mensagem que é exibida. Esta mensagem o lembra de que, se você adicionar o código do VBA para a pasta de trabalho ou o documento enquanto você está executando o projeto a partir 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 pasta de saída de compilação é sobrescrito sempre que você criar o projeto.

    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.

  9. 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 de Visual Basic

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

Conceitos

Código de chamada personalizações em nível de documento do VBA

Outros recursos

Projetando e criando soluções do Office

Combinando o VBA e personalizações em nível de documento