Visual Basic for Applications - Visual Basic for Applications

Visual Basic for Applications
Paradigma Multiparadigma
Desenvolvedor Microsoft
Apareceu pela primeira vez 1993 ; 28 anos atrás ( 1993 )
Versão estável
7.1 ( Office 2019 )
Disciplina de digitação Híbrido estático / dinâmico , híbrido forte / fraco
SO Microsoft Windows , macOS
Licença Software proprietário comercial
Influenciado por
QuickBASIC , Visual Basic

Visual Basic for Applications ( VBA ) é uma implementação da Microsoft da programação orientada a eventos linguagem Visual Basic 6 , que foi declarado legado em 2008, e é um associado ambiente de desenvolvimento integrado (IDE). Embora o pré-.NET Visual Basic não seja mais compatível ou atualizado pela Microsoft, a linguagem de programação VBA foi atualizada em 2010 com a introdução do Visual Basic for Applications 7 nos aplicativos do Microsoft Office. Em 2020, o VBA manteve sua posição como a linguagem "mais temida" para desenvolvedores por 2 anos, de acordo com alguns que participaram de pesquisas realizadas pelo Stack Overflow . (A linguagem mais temida em 2018 foi o Visual Basic 6).

O Visual Basic for Applications permite construir funções definidas pelo usuário (UDFs), automatizar processos e acessar a API do Windows e outras funcionalidades de baixo nível por meio de bibliotecas de vínculo dinâmico (DLLs). Ele substitui e expande as habilidades de linguagens de programação de macro específicas de aplicativos anteriores , como WordBASIC do Word . Ele pode ser usado para controlar muitos aspectos do aplicativo host, incluindo a manipulação de recursos da interface do usuário, como menus e barras de ferramentas, e trabalhar com formulários de usuário personalizados ou caixas de diálogo.

Como o nome sugere, o VBA está intimamente relacionado ao Visual Basic e usa a Visual Basic Runtime Library. No entanto, o código VBA normalmente só pode ser executado em um aplicativo host, em vez de em um programa independente . O VBA pode, no entanto, controlar um aplicativo de outro usando a automação OLE . Por exemplo, o VBA pode criar automaticamente um relatório do Microsoft Word a partir de dados do Microsoft Excel que o Excel coleta automaticamente dos sensores pesquisados. O VBA pode usar, mas não pode criar, ActiveX / COM DLLs e versões posteriores adicionam suporte para módulos de classe.

O VBA é integrado à maioria dos aplicativos do Microsoft Office , incluindo o Office para Mac OS X (exceto a versão 2008) e outros aplicativos da Microsoft, incluindo o Microsoft MapPoint e o Microsoft Visio . O VBA também é implementado, pelo menos parcialmente, em aplicativos publicados por outras empresas que não a Microsoft, incluindo ArcGIS , AutoCAD , CorelDraw , LibreOffice , Reflection , SolidWorks , WordPerfect e UNICOM System Architect (que suporta VBA 7.1).

Projeto

O código escrito em VBA é compilado para Microsoft P-Code (pseudo-código), uma linguagem intermediária proprietária , que os aplicativos host ( Access , Excel , Word , Outlook e PowerPoint ) armazenam como um fluxo separado em arquivos COM Structured Storage (por exemplo , .docou .xls) independente dos fluxos de documentos. O código intermediário é então executado por uma máquina virtual (hospedada pelo aplicativo host). Apesar de sua semelhança com muitos dialetos BASIC antigos (particularmente Microsoft BASIC , do qual é indiretamente derivado), o VBA é incompatível com qualquer um deles, exceto Visual Basic , onde o código-fonte de módulos e classes VBA pode ser importado diretamente, e que compartilha o mesmo biblioteca e máquina virtual. A compatibilidade termina com o Visual Basic versão 6; O VBA é incompatível com o Visual Basic .NET (VB.NET). O VBA é propriedade da Microsoft e, além da interface COM, não é um padrão aberto .

Automação

A interação com o aplicativo host usa automação OLE . Normalmente, o aplicativo host fornece uma biblioteca de tipos e documentação da interface de programação de aplicativo (API) que documenta como os programas VBA podem interagir com o aplicativo. Esta documentação pode ser examinada de dentro do ambiente de desenvolvimento VBA usando seu Pesquisador de objetos.

Os programas do Visual Basic for Applications escritos para usar a interface de automação OLE de um aplicativo não podem ser usados ​​para automatizar um aplicativo diferente, mesmo se esse aplicativo hospedar o tempo de execução do Visual Basic, porque as interfaces de automação OLE serão diferentes. Por exemplo, um programa VBA escrito para automatizar o Microsoft Word não pode ser usado com um processador de texto diferente, mesmo que esse processador hospede o VBA.

Por outro lado, vários aplicativos podem ser automatizados a partir de um host, criando objetos Aplicativo no código VBA. As referências às diferentes bibliotecas devem ser criadas no cliente VBA antes que qualquer um dos métodos, objetos, etc. se torne disponível para uso no aplicativo. Isso é obtido por meio do que é conhecido como Early ou Late Binding. Esses objetos de aplicativo criam o link OLE para o aplicativo quando são criados pela primeira vez. Os comandos para os diferentes aplicativos devem ser feitos explicitamente por meio desses objetos de aplicativo para funcionar corretamente.

Como exemplo, o código VBA escrito no Microsoft Access pode estabelecer referências às bibliotecas do Excel, Word e Outlook; isso permite criar um aplicativo que - por exemplo - executa uma consulta no Access, exporta os resultados para o Excel e os analisa, e então formata a saída como tabelas em um documento do Word ou os envia como um e-mail do Outlook.

Os programas VBA podem ser anexados a um botão de menu, uma macro , um atalho de teclado ou um evento OLE / COM, como a abertura de um documento no aplicativo. O idioma fornece uma interface de usuário na forma de UserForms, que pode hospedar controles ActiveX para funcionalidade adicional.

A automação da comunicação entre processos inclui o Dynamic Data Exchange (DDE) e o RealTimeData (RTD), que permite chamar um servidor de automação do Component Object Model (COM) para dados financeiros ou científicos dinâmicos ou em tempo real.

Preocupações com segurança

Como acontece com qualquer linguagem de programação comum, macros VBA podem ser criadas com más intenções. Usando o VBA, a maioria dos recursos de segurança está nas mãos do usuário, não do autor. As opções do aplicativo host VBA são acessíveis ao usuário. O usuário que executa qualquer documento contendo macros VBA pode predefinir o software com as preferências do usuário. Os usuários finais podem se proteger de ataques desabilitando a execução de macros em um aplicativo ou concedendo permissão para que um documento execute código VBA apenas se tiverem certeza de que a origem do documento é confiável.

Histórico de versão

  • O VBA foi lançado pela primeira vez com o MS Excel 5.0 em 1993. Tornou-se um sucesso instantâneo entre os desenvolvedores criar soluções corporativas usando o Excel. A inclusão do VBA com o Microsoft Project, Access e Word substituindo AccessBASIC e WordBASIC, respectivamente, tornou-o mais popular.
  • O VBA 4.0 é o próximo lançamento famoso com uma versão totalmente atualizada em comparação com a anterior. Lançada em 1996, é escrita em C ++ e se tornou uma linguagem orientada a objetos.
  • O VBA 5.0 foi lançado em 1997 junto com todos os produtos MS Office 97. A única exceção para isso foi o Outlook 97, que usou o VBScript .
  • O VBA 6.0 e o VBA 6.1 foram lançados em 1999, principalmente com suporte para suplementos COM no Office 2000. O VBA 6.2 foi lançado junto com o Office 2000 SR-1.
  • O VBA 6.3 foi lançado após o Office XP, o VBA 6.4 seguiu o Office 2003 e o VBA 6.5 foi lançado com o Office 2007.
  • O Office 2010 inclui o VBA 7.0. Não há novos recursos no VBA 7 para desenvolvedores em comparação com o VBA 6.5, exceto para suporte a 64 bits. No entanto, após o VBA 6.5 / Office 2007, a Microsoft parou de licenciar o VBA para outros aplicativos.
  • Office 2013, Office 2016 e Office 2019 incluem VBA 7.1.

Desenvolvimento

A partir de 1º de julho de 2007, a Microsoft não oferece mais licenças de distribuição VBA para novos clientes. A Microsoft pretendia adicionar linguagens baseadas em .NET à versão atual do VBA desde o lançamento do .NET Framework , das quais as versões 1.0 e 1.1 incluíam uma tecnologia de tempo de execução de script chamada Script para .NET Framework . O SDK do Visual Studio .NET 2002 e 2003 continha um IDE de script separado, denominado Visual Studio for Applications (VSA), que oferecia suporte a VB.NET. Um de seus recursos significativos era que as interfaces para a tecnologia estavam disponíveis por meio de scripts ativos ( VBScript e JScript ), permitindo que até mesmo aplicativos sem o .NET fossem criados em scripts por meio de linguagens .NET. No entanto, o VSA foi preterido na versão 2.0 do .NET Framework, não deixando um caminho de atualização claro para aplicativos que desejam suporte a scripts ativos (embora "scripts" possam ser criados em C # , VBScript e outras linguagens .NET, que podem ser compilados e executados em tempo de execução por meio de bibliotecas instaladas como parte do tempo de execução .NET padrão).

A Microsoft abandonou o suporte VBA para Microsoft Office 2008 para Mac . O VBA foi restaurado no Microsoft Office para Mac 2011 . A Microsoft disse que não tem planos de remover o VBA da versão do Office para Windows.

Com o Office 2010 , a Microsoft introduziu o VBA7, que contém um tipo de dados de ponteiro verdadeiro: LongPtr. Isso permite fazer referência ao espaço de endereço de 64 bits. A instalação de 64 bits do Office 2010 não oferece suporte a controles comuns de MSComCtl (TabStrip, Toolbar, StatusBar, ProgressBar, TreeView, ListViews, ImageList, Slider, ImageComboBox) ou MSComCt2 (Animation, UpDown, MonthView, DateTimePicker, FlatScrollBar), então legado O código de 32 bits transferido para o código VBA de 64 bits que depende desses controles comuns não funcionará. Isso não afeta a versão de 32 bits do Office 2010. O VBA7 não inclui a versão de 64 bits dos controles comuns, portanto, não deixa os desenvolvedores sem meios para migrar aplicativos VBA para 64 bits. A Microsoft sugere entrar em contato com o fornecedor do software para versões de 64 bits dos controles VBA.

Veja também

Referências