Compartilhar via


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

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

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

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

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

Expor código em uma classe de item de host

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

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

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

  1. Abrir ou criar um projeto de nível de documento Visual Basic 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 a propriedade, método ou evento que você deseja expor para VBA para uma das classes host item em seu projeto e declare o novo membro como Public.O nome da classe depende do aplicativo:

    • No Word 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, Sheet2e Sheet3 por padrão.

  4. Defina o EnableVbaCallers propriedade item de host como Verdadeiro.Essa propriedade está disponível na janela de propriedades quando o item de host Abrir no designer.

    Após definir essa propriedade, Ferramentas do Visual Studio para o Office define automaticamente o ReferenceAssemblyFromVbaProject propriedade como Verdadeiro.Para obter mais informações sobre essa propriedade, consulte Chamar o código em nível de documento personalizações do VBA.

    Observação:

    Se a pasta de trabalho ou o documento não já contiver código do VBA , ou Se código do VBA no documento não for confiável para ser executado, você receberá uma mensagem de erro quando você define o Propriedade de EnableVbaCallers como 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.

  5. 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 enquanto está executando o projeto de 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 pasta de saída de compilação é sobrescrito sempre 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 uma propriedade chamada CallVSTOAssembly a ThisDocument, ThisWorkbook, Sheet1, Sheet2ou Sheet3 módulo no projeto VBA.Você pode usar essa propriedade para acessar membros públicos da classe que é exposto a VBA. Para obter mais informações, consulte Chamar o código em nível de documento personalizações do VBA.

  6. Crie o projeto.

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

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

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

  1. Abrir ou criar um projeto de nível de documento Visual Basic 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:

    Este 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 ComClassAttribute atributos a classe que você está expondo a VBA.Esses atributos tornar a classe Visível para VBA.

    <Microsoft.VisualBasic.ComClass()> _
    <System.Runtime.InteropServices.ComVisibleAttribute(True)> _
    
  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.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. Abrir o documento (para o Word) ou o designer de planilha (para o Excel) em Visual Studio.

  7. 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á contiver código do VBA , ou Se código VBA no documento não é confiável para ser executado , você receberá uma mensagem de erro quando você definir 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.

  8. 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 enquanto está executando o projeto de 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 pasta de saída de compilação é sobrescrito sempre 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.

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

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

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