Como: expor um código VBA em um projeto de Visual Basic
Você pode expor o código em um projeto de Visual Basic para o código do Visual Basic é Applications (VBA) se você deseja 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 2013 e Excel 2010; Word 2013 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
O processo do Visual Basic é diferente do processo visual C#.Para obter mais informações, consulte Como: expor um código VBA em um projeto do Visual C#.
O processo é diferente para o código de uma classe de item de host do que é para o código em outras classes:
Expõe o código em uma classe de item do host
Expõe o código que não está em uma classe de item do host
Para uma demonstração de vídeo relacionada, consulte Como: eu faço Código de chamada VSTO de VBA?.
Expõe o código em uma classe de item do host
Para ativar o código de VBA para chamar código Visual Basic em uma classe de item host, defina a propriedade de EnableVbaCallers de item host a True.
Para uma explicação passo a passo que demonstra como expor um método de uma classe de item host e para chamar depois de VBA, consulte Passo a passo: Chamar o código do VBA em um projeto de Visual Basic.Para obter mais informações sobre os itens host, consulte Itens de host e visão geral sobre controles de Host.
Para expor o código em um item da VBA host
Abra ou crie um projeto de Visual Basic da nível baseado em um documento do word, em um modelo de pasta de trabalho do Excel, ou do excel que suportem macros, e que já contém o código de VBA.
Para obter mais informações sobre formatos de arquivo de documento que suportam macros, consulte Combinando o VBA e personalizações em nível de documento.
Observação Esse recurso pode não ser usado em projetos do modelo de palavras.
Certifique-se de que o código de VBA no documento seja permitido executar sem avisar o usuário para ativar macros.Você pode confiar o código de VBA para executar adicionando o local do projeto do Office à lista de locais confiáveis nas configurações do centro de confiança por palavras ou Excel.
Adicione a propriedade, o método, ou o evento que você deseja expor a VBA a uma das classes de item host em seu projeto, e declarar o novo membro como Public.O nome da classe depende do aplicativo:
Em um projeto de palavras, a classe de item host é chamada ThisDocument por padrão.
Em um projeto do excel, classes de item host são chamadas ThisWorkbook, Sheet1, Sheet2, e Sheet3 por padrão.
Defina a propriedade de EnableVbaCallers para o item host a True.Esta propriedade está disponível na janela de Propriedades quando o item host está aberto no designer.
Após você definir essa propriedade, o Visual Studio define automaticamente a propriedade de ReferenceAssemblyFromVbaProject a True.
Observação Se a pasta de trabalho ou o documento não contêm o código de VBA, ou se o código de VBA no documento não é confiável para executar, você receberá uma mensagem de erro quando você define a propriedade de EnableVbaCallers a True.Isso ocorre porque o Visual Studio não pode alterar o projeto de VBA no documento em esta situação.
Clique OK na mensagem exibida.Esta mensagem que lembra você se você adicionar o código de VBA para a pasta de trabalho ou documento quando você executar o projeto de Visual Studio, o código de VBA será perdido a próxima vez que você criar o projeto.Isso ocorre porque o documento na pasta de saída de compilação é substituído às vezes compilação do projeto.
Em este ponto, o Visual Studio configurar o projeto para que o projeto de VBA pode chamar no assembly.Visual Studio também adiciona uma propriedade chamada CallVSTOAssembly a ThisDocument, a ThisWorkbook, a Sheet1, a Sheet2, ou módulo de Sheet3 no projeto de VBA.Você pode usar essa propriedade para acessar membros públicos de classes que você tenha expostos a VBA.
Crie o projeto.
Expõe o código que não está em uma classe de item do host
Para ativar o código de VBA para chamar código Visual Basic que não está em uma classe de item host, altere o código para que é visível para VBA.
Para expor o código que não está em uma classe de item host a VBA
Abra ou crie um projeto de Visual Basic da nível baseado em um documento do word, em um modelo de pasta de trabalho do Excel, ou do excel que suportem macros, e que já contém o código de VBA.
Para obter mais informações sobre formatos de arquivo de documento que suportam macros, consulte Combinando o VBA e personalizações em nível de documento.
Observação Esse recurso pode não ser usado em projetos do modelo de palavras.
Certifique-se de que o código de VBA no documento seja permitido executar sem avisar o usuário para ativar macros.Você pode confiar o código de VBA para executar adicionando o local do projeto do Office à lista de locais confiáveis nas configurações do centro de confiança por palavras ou Excel.
Adicione o membro que você deseja expor a VBA a uma classe pública em seu projeto, e declarar o novo membro como public.
Aplicar os seguintes ComVisibleAttribute e atributos de ComClassAttribute a classe que você está exposto a VBA.Esses atributos tornam a classe visível para VBA.
<Microsoft.VisualBasic.ComClass()> _ <System.Runtime.InteropServices.ComVisibleAttribute(True)> _
Substituir o método de GetAutomationObject de uma classe de item host em seu projeto retornar uma instância da classe que você está exposto a VBA.O exemplo de código a seguir pressupõe que você é exposto uma classe nomeada DocumentUtilities a VBA.
Protected Overrides Function GetAutomationObject() As Object Return New DocumentUtilities() End Function
Abra o documento (para word) ou o designer da planilha do excel (para) em Visual Studio.
Em a janela de Propriedades , selecione a propriedade de ReferenceAssemblyFromVbaProject , e altere o valor para True.
Observação Se a pasta de trabalho ou o documento não contêm o código de VBA, ou se o código de VBA no documento não é confiável para executar, você receberá uma mensagem de erro quando você define a propriedade de ReferenceAssemblyFromVbaProject a True.Isso ocorre porque o Visual Studio não pode alterar o projeto de VBA no documento em esta situação.
Clique OK na mensagem exibida.Esta mensagem que lembra você se você adicionar o código de VBA para a pasta de trabalho ou documento quando você executar o projeto de Visual Studio, o código de VBA será perdido a próxima vez que você criar o projeto.Isso ocorre porque o documento na pasta de saída de compilação é substituído às vezes compilação do projeto.
Em este ponto, o Visual Studio configurar o projeto para que o projeto de VBA pode chamar no assembly.Visual Studio também adiciona um método chamado GetManagedClass ao projeto de VBA.Você pode chamar esse método em qualquer lugar dentro do projeto de VBA acessar a classe que você tenha expostos a VBA.
Crie o projeto.
Consulte também
Tarefas
Como: criar projetos do Office em Visual Studio
Passo a passo: Chamar o código do VBA em um projeto de Visual Basic
Como: expor um código VBA em um projeto do Visual C#